统计:本周,本月,上周,上月,本周每天,本月每天,上周每天,上月每天数量的SQL语句总结。

#新手笔记:最近做了一个统计,前端是柱状图,饼状图,做数据展示,管理员可以看到每天的申请数量人数。

数据库中“status”字段是状态:0代表待处理,1代表已同意,2代表已拒绝,4代表已过期。

在这里插入图片描述
这是其中一个模块。

1、展示本周中每一天的人数统计。

对应部分的sql语句为:

 SELECT
	DATE_FORMAT( t.CREATE_TIME, '%Y-%m-%d' ) AS dateTime,
	sum( CASE WHEN t.STATUS = '0' THEN '1' ELSE '0' END ) pendingStatus,
	sum( CASE WHEN t.STATUS = '1' THEN '1' ELSE '0' END ) agreeStatus,
	sum( CASE WHEN t.STATUS = '2' THEN '1' ELSE '0' END ) refuseStatus,
	sum( CASE WHEN t.STATUS = '4' THEN '1' ELSE '0' END ) invalidStatus
FROM
	table  t
WHERE
	yearweek( date_format( t.CREATE_TIME, '%Y-%m-%d' ) ) = yearweek( now() )
GROUP BY 
	dateTime
ORDER BY 
	dateTime ASC

2、展示本月每一天的人数统计

对应部分的sql语句为:

SELECT
     DATE_FORMAT( t.CREATE_TIME, '%Y-%m-%d' ) AS dateTime,
     sum( CASE WHEN t.STATUS = '0' THEN '1' ELSE '0' END ) pendingStatus,
     sum( CASE WHEN t.STATUS = '1' THEN '1' ELSE '0' END ) agreeStatus,
     sum( CASE WHEN t.STATUS = '2' THEN '1' ELSE '0' END ) refuseStatus,
     sum( CASE WHEN t.STATUS = '4' THEN '1' ELSE '0' END ) invalidStatus
 FROM
     table  t
 WHERE
     date_format(t.CREATE_TIME, '%Y-%m') = date_format( CURDATE(), '%Y-%m')
 GROUP BY dateTime
 ORDER BY dateTime ASC

3、统计本周的人数

对应部分的sql语句为:

SELECT 
	t.STATUS,
	COUNT(t.STATUS) count
FROM
	table t
WHERE
	t.status in (0, 1, 2, 4)
AND
	yearweek( date_format( apply.CREATE_TIME, '%Y-%m-%d') ) = yearweek( now() )
GROUP BY 
	t.STATUS

4、统计本月的人数

对应部分的sql语句为:

SELECT 
	t.STATUS,
	COUNT(t.STATUS) count
FROM
	table t
WHERE
	t.status in (0, 1, 2, 4)
AND
	date_format(apply.CREATE_TIME, '%Y-%m') = date_format( CURDATE(), '%Y-%m')
GROUP BY 
	t.STATUS

其中涉及的大多就是一些对SQL函数的应用。不懂的地方可以查阅相关MySQL函数大全。

最后,如果我有不对的地方,也希望各位大神纠正,指导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值