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
按月汇总每个人总的访问总次数和总时间 展开
姓名 访问时间 进入时间 离开时间
张三 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
按月汇总每个人总的访问总次数和总时间 展开
2个回答
展开全部
创建测试表
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');
结果
展开全部
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')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询