sql优化之统计日期

出现又离开亅 2021-03-25 03:37:44
SELECT
DATE_FORMAT( apply.CREATE_TIME, '%Y-%m-%d' ) AS dateTime,
sum( CASE WHEN apply.STATUS = '0' THEN '1' ELSE '0' END ) s0,
sum( CASE WHEN apply.STATUS = '1' THEN '1' ELSE '0' END ) s1,
sum( CASE WHEN apply.STATUS = '2' THEN '1' ELSE '0' END ) s2,
sum( CASE WHEN apply.STATUS = '4' THEN '1' ELSE '0' END ) s3
FROM
USER_APPLY apply
WHERE
yearweek( date_format( apply.CREATE_TIME, '%Y-%m-%d' ) ) = yearweek( now() )
GROUP BY dateTime
ORDER BY dateTime ASC


sql如上。统计查询的是本周中,status状态为0,1,2,4的人数各有多少。结果如下:




有一点需要改进的是,某天没有数据时,默认全部统计为0,而不是不显示这个日期。求教大神怎么优化一下,自己学术不到家,搞不出来了。
...全文
233 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
RockeyCui 2021-03-26
  • 打赏
  • 举报
回复
某天没数据默认补0,一般采取left join 处理。先生成时间段,在 left join 统计。
https://blog.csdn.net/yugong_/article/details/105749662
明白畅达 2021-03-25
  • 打赏
  • 举报
回复
select count(*) as people , stutas FROM USER_APPLY where yearweek( date_format( apply.CREATE_TIME, '%Y-%m-%d' ) ) = yearweek( now() ) group by stutas

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧