#新手笔记:最近做了一个统计,前端是柱状图,饼状图,做数据展示,管理员可以看到每天的申请数量人数。
数据库中“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函数大全。
最后,如果我有不对的地方,也希望各位大神纠正,指导。