oracle中group by按月分组统计

姓名访问时间进入时间离开时间张三2013-02-0315:23:222013-02-0315:23:222013-02-0315:33:22李四2013-02-0415:... 姓名 访问时间 进入时间 离开时间 张三 2013-02-03 15:23:22 2013-02-03 15:23:22 2013-02-03 15:33:22 李四 2013-02-04 15:23:22 2013-02-04 18:23:22 2013-02-04 18:53:22 王武 2013-02-04 15:23:22 2013-02-05 17:23:22 2013-02-05 18:23:22 张三 2013-02-04 15:23:22 2013-02-06 11:23:22 2013-02-06 14:23:22按月汇总每个人总的访问总次数和总时间(离开时间-进入时间 例如 进入时间为 2013-02-03 15:23:22 离开时间为 2013-02-03 15:33:22 则时间是33分钟 进入时间为 2013-02-06 11:23:22 离开时间为 2013-02-03 2013-02-06 14:23:22 则时间是1小时 )
姓名 访问时间 进入时间 离开时间
张三 2013-02-03 15:23:22 2013-02-03 15:23:22 2013-02-03 15:33:22
李四 2013-02-04 15:23:22 2013-02-04 18:23:22 2013-02-04 18:53:22
王武 2013-02-04 15:23:22 2013-02-05 17:23:22 2013-02-05 18:23:22
张三 2013-02-04 15:23:22 2013-02-06 11:23:22 2013-02-06 14:23:22
按月汇总每个人总的访问总次数和总时间
展开
 我来答
badkano
推荐于2017-09-26 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885373
团长

向TA提问 私信TA
展开全部

创建测试表

create table test
(姓名 varchar2(10),
访问时间 date,
进入时间 date,
离开时间 date);

    
insert into test values ('张三',to_date('2013-02-03 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-03 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-03 15:33:22','yyyy-mm-dd hh24:mi:ss'));
insert into test values ('李四',to_date('2013-02-04 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-04 18:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-04 18:53:22','yyyy-mm-dd hh24:mi:ss'));
insert into test values ('王武',to_date('2013-02-04 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-05 17:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-05 18:23:22','yyyy-mm-dd hh24:mi:ss'));
insert into test values ('张三',to_date('2013-02-04 15:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-06 11:23:22','yyyy-mm-dd hh24:mi:ss'),to_date('2013-02-06 14:23:22','yyyy-mm-dd hh24:mi:ss'));

运行

select 姓名,
to_char(访问时间,'yyyy-mm') 访问月份,
to_char(trunc(round(sum(离开时间-进入时间)*1440)/60))||'小时'||to_char(round(sum((离开时间-进入时间)*1440))-trunc(round(sum(离开时间-进入时间)*1440)/60)*60)||'分钟' 时间汇总,
count(*) 访问次数 from test 
group by 姓名,to_char(访问时间,'yyyy-mm');

结果

kaiyanghao123
2014-01-07 · TA获得超过1615个赞
知道小有建树答主
回答量:1219
采纳率:66%
帮助的人:576万
展开全部
select a.name "姓名",
       to_char(a.access_time, 'YYYY-MM') "月份",
       COUNT(a.name) "访问次数",
       sum((a.out_time - a.in_time) * 60 * 24) "总时间(分钟)"
  from test a
 GROUP BY A.NAME, to_char(a.access_time, 'YYYY-MM')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式