SQL按月统计,按日分组

SQL按月统计,按日分组,第1张

declare @yf int

declare @rqxx varchar (30)

declare @rqsx varchar (30)

set @yf = '' --输入月份

set @rqxx =convert(varchar(30),@yf-1)+'月'+'26日'+'14:30:00'

set @rqxx =convert(varchar(30),@yf)+'月'+'25日'+'14:30:00'

select sum(交易量) from a where 交易时间 between @rqxx and @rqsx

这个只是个思路

上面我把@rqxx,@rqsx 定义为 varchar 你在具体定义时 要和a中交易时间一致,时间格式也要改 而且这个月份只能实现 2月--12月查询 有需要的话自己改下

select distinct to_char(dt, 'yyyy-mm-dd') as years,to_char(dt, 'iw') as week

from (select (to_date('2013-4-15', 'yyyy-mm-dd') + rownum - 1) dtfrom dual connect by rownum <= to_date('2013-7-15', 'yyyy-mm-dd') -to_date('2013-4-15', 'yyyy-mm-dd'))

group by to_char(dt, 'iw')

ORDER BY years,week

这样试试:

SELECT 起运地,sum(里程之总计),sum(数量之总计),sum(总额之总计)

FROM [TableName] group by 起运地,substring(出发日期,5,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 ROWNUM AS RN FROM DUAL CONNECT BY ROWNUM <= 12

以上是oracle的写法。sql server可以用row_number() over(order by XXX)也可实现。

可以用上述虚拟列出的表格数据,与你的语句进行左连接,NVL空值设置为0即可。

你的WHERE语句没有问题。如果要用GROUP BY优化的话,可能需要用到复杂的数据库分析函数,这些分析函数用起来也比较费劲啊。。。

以上就是关于SQL按月统计,按日分组全部的内容,包括:SQL按月统计,按日分组、Oracle里面如何让一段日期按周、月、季度、年分组显示啊求高手赐教,贴出正确sql追加高分!、group by按月分组统计(SQL)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9763951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存