echarts图表页面,sql 按日,周,月统计

本文详细介绍了使用SQL进行数据统计的方法,针对不同时间跨度(天、周、月)的需求,提供了具体的SQL语句实例,包括按天、周、月统计用户增量的技巧,并解释了iw、MM等日期格式参数的意义。

首先先说需求,页面echarts图形控件,需要根据时间跨度间隔不同,页面不知如何实现不同时间跨度,所以用sql实现,
数据库表接口,日期字段是day 格式是vachar(2),统计字段userAdd
如果你表内时间字段格式是date类型的就不用to_date(day,‘YYYY-MM-dd’)转换了,

1.按天统计sql语句很好写
传入参数,开始时间startDate,结束时间endDate,统计类型type

 select userAdd,day
    from tableName where day >= #{startDate} and day <![CDATA[<=]]> #{endDate}

结果如图在这里插入图片描述
2.按周统计
查询出来是自然周,也就是一年的第几周

select to_char(to_date(day,'YYYY-MM-dd'),'iw') AS day,sum(userAdd) as userAdd
from tableName 
WHERE   day >='2019-07-09' and day <='2019-08-05'  
group by to_char(to_date(day,'YYYY-MM-dd'),'iw')  
ORDER BY day;  

结果如图,第28周,第29周
在这里插入图片描述
或者可以查出天

select to_char(next_day(to_date(day, 'yyyy-MM-dd') + 15 / 24 - 7, 2), 'YYYY-MM-DD') AS day,
                  sum(userAdd)      as userAdd
           from tableName 
           where day >= '2019-07-09'
             and day <= '2019-08-05'
           group by to_char(next_day(to_date(day, 'yyyy-MM-dd') + 15 / 24 - 7, 2), 'YYYY-MM-DD')
           ORDER BY day

如图
在这里插入图片描述
3.按月统计,与自然周一样只要把iw改成MM,所以也可以用同一个sql,用${}注入进去

select to_char(to_date(day,'YYYY-MM-dd'),'MM') AS day,sum(userAdd) as userAdd
    from tableName 
    WHERE   day >='2019-07-09' and day <='2019-08-05'  
    group by to_char(to_date(day,'YYYY-MM-dd'),'MM')  
    ORDER BY day;  

结果如图,7月份8月份
在这里插入图片描述
衍伸小知识
iw,MM,还可以统计年换成YYYY
其中参数意思如下,
dd—————–日(可以传递MM-dd,方便排序);
iw —————–周;
MM—————月;
YYYY————–年;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值