SQL按照年月员工状态统计出勤情况
需求描述
表名:employeesign
列名:emp_date和emp_status
求一月份有多少人请假,多少人签到等
最终得到如下结果:
解决方法
通过SQL里的聚合函数结合CASE WHEN来完成统计。
SQL代码
-- 1 创建表(以mysql版为例)
CREATE TABLE emp_temp
(
id varchar(30),
create_by varchar(10),
create_time datetime,
update_by varchar(10),
update_time datetime,
sys_org_code varchar(10),
emp_name varchar(20),
emp_date datetime,
emp_status SMALLINT,
emp_pic varchar(30),
remark varchar(20)
)-- 2 按照年月份、考勤状态统计
SELECT
DATE_FORMAT(emp_date,'%Y-%m') '年月份',
COUNT(CASE WHEN emp_status = 0 THEN 1 ELSE NULL END) '正常签到',
COUNT(CASE WHEN emp_status = 1 THEN 1 ELSE NULL END) '未签到',
COUNT(CASE WHEN emp_status = 2 THEN 1 ELSE NULL END) '缺勤',
COUNT(CASE WHEN emp_status = 3 THEN 1 ELSE NULL END) '请假'
FROM
(
SELECT max(emp_date) emp_date,id,emp_status FROM emp_temp
GROUP BY id
)A
GROUP BY DATE_FORMAT(emp_date,'%Y-%m')-- 3 结果
/*
年月份 正常签到 未签到 缺勤 请假
2020-09 1 0 0 0
2020-12 0 1 1 2
2021-01 6 3 12 10
*/-- 4 附录初始化数据脚本
INSERT INTO `emp_temp` VALUES ('1442771447134928906', 'admin', '2021-09-28 16:41:33', NULL, NULL, 'A01', '1442503674139873284', '2020-09-23 16:34:50', 0, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1442771447164289029', 'admin', '2021-09-28 16:41:33', NULL, NULL, 'A01', '1442503674139873286', '2020-12-23 10:34:23', 1, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1442771447164289030', 'admin', '2021-09-28 16:41:33', NULL, NULL, 'A01', '1442503674148261889', '2020-12-23 10:34:24', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1442771447164289031', 'admin', '2021-09-28 16:41:33', NULL, NULL, 'A01', '1442503674148261890', '2020-12-23 10:34:25', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1442771447164289032', 'admin', '2021-09-28 16:41:33', NULL, NULL, 'A01', '1442503674148261891', '2020-12-23 10:34:26', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982938997579778', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674123096069', '2021-01-01 12:12:01', 1, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939018551298', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484674', '2021-01-01 12:12:02', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939022745601', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484675', '2021-01-01 12:12:03', 1, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939022745602', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484676', '2021-01-01 12:12:04', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939022745603', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484677', '2021-01-01 12:12:05', 0, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939022745604', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484678', '2021-01-01 12:12:06', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939031134210', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873282', '2021-01-01 12:12:07', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939031134211', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873283', '2021-01-01 12:12:08', 0, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939035328513', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873284', '2021-01-01 12:12:09', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939035328514', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873285', '2021-01-01 12:12:10', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939035328515', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873286', '2021-01-01 12:12:11', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939039522817', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674148261889', '2021-01-01 12:12:12', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939039522818', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674148261890', '2021-01-01 12:12:13', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939039522819', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674148261891', '2021-01-01 12:12:14', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939039522820', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674123096069', '2021-01-01 12:12:15', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939047911426', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484674', '2021-01-01 12:12:16', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939052105729', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484675', '2021-01-01 12:12:17', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939052105730', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484676', '2021-01-01 12:12:18', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939052105731', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484677', '2021-01-01 12:12:19', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939052105732', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484678', '2021-01-01 12:12:20', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939060494338', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873282', '2021-01-01 12:12:21', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939060494339', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873283', '2021-01-01 12:12:22', 0, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939060494340', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873284', '2021-01-01 12:12:23', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939060494341', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873285', '2021-01-01 12:12:24', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939060494342', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674139873286', '2021-01-01 12:12:25', 0, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939068882946', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674148261889', '2021-01-01 12:12:26', 2, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939068882947', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674148261890', '2021-01-01 12:12:27', 3, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939068882948', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674148261891', '2021-01-01 12:12:28', 0, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939068882949', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674123096069', '2021-01-01 12:12:29', 1, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939077271553', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484674', '2021-01-01 12:12:30', 0, NULL, '无');
INSERT INTO `emp_temp` VALUES ('1448982939077271554', 'admin', '2021-10-15 20:03:48', NULL, NULL, 'A01', '1442503674131484675', '2021-01-01 12:12:31', 3, NULL, '无');
SQL按照年月员工状态统计出勤情况相关推荐
- java考勤程序,请为一个公司编写程序记录公司员工出勤情况
员工可通过客户端向服务器端发送数据表示到达公司,服务端发送消息确认,统计所有员工出勤情况,存放于一个指定文件中. 用UDP做法: 服务器端: import java.io.BufferedWriter ...
- java课设查询学生出勤情况,jsp学生考勤信息系统
本系统主要针对目前高校学生在线请假以及学生上课出勤管理而设计的信息系统.本系统总体上由三大功能模块:请假系统模块.考勤系统模块.后台管理模块组成.系统涉及到高校三大类用户:学生.任课老师.系统管理员. ...
- [asp]统计在线人数情况
[asp]统计在线人数情况 以前ASP版本的统计在线.因为是从以前的系统中提取出来的.使用的话要修改下. If Cbool(Application("MARKONLINE")) = ...
- TCP协议 状态解析和状态统计
一.三次握手和四次挥手 1.建立连接(三次握手) (1)服务器会处于listen状态,客户端发送一个带SYN标志的TCP报文到服务器. (2)服务器端回应客户端的请求,这是三次握手中的第2个报文,这个 ...
- execution 排除_使用SQL Server 2016 Live Execution统计信息对SQL查询性能进行故障排除
execution 排除 SQL Server Management Studio a graphical interactive that allows you to interact with t ...
- SQL-24 获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'...
题目描述 获取所有非manager员工当前的薪水情况,给出dept_no.emp_no以及salary ,当前表示to_date='9999-01-01' CREATE TABLE `dept_emp ...
- centos进程php-fpm,CentOS 6.x 开启Nginx和Php-fpm状态统计
Nginx和PHP-FPM都在安装的时候创建了一个状态页,用于统计Nginx和PHP-FPM的相关状态信息.下面介绍一下如何开启Nginx和PHP-FPM的状态统计,以及介绍各参数的含义. (一)开启 ...
- 比较awk python: [文件]web日志信息统计 。 [命令]netstat命令状态统计
web日志文件统计分析.netstat 命令行统计分析 比价awk和python的处理方法 1. web日志内容 ---文件形式 root@h111:/var/log/nginx# cat acces ...
- hive sql系列(二)——统计每个人每个月访问量和累计月访问量
每天分享一个sql,帮助大家找到sql的快乐 需求:统计每个人每个月访问量和累计月访问量 建表语句 CREATE TABLE visit( userId string, visitDate strin ...
最新文章
- EggNOG功能注释数据库在线和本地使用
- Android实例-为程序创建快捷方式(未测试)
- 双边滤波--OpenCV实现
- 个人重构之一般用户实现
- Linux vim编辑器常用命令
- (七)python3 只需3小时带你轻松入门——List与dict
- EF关闭自动创建数据库表的方式
- Team Foundation Server的回滚操作
- 三次多项式曲线php,多项式计算的效率测试,多项式计算效率_PHP教程
- 【转载】VMware vSphere中三种磁盘规格的解释说明
- 企业IT服务的反脆弱能力建设
- 今日恐慌与贪婪指数为23 恐慌程度有所缓解
- 【BlackHat】黑帽大会上值得关注的安全工具
- POJ2260 ZOJ1949 UVA541 Error Correction题解
- Fiddler原理~知多少?
- DelphiXe Ansistring使用注意事项
- apple-system BlinkMacSystemFont Mac兼容字体库
- 语法分析分析器的实现
- 【雷达与对抗】【2014】MIMO雷达中的波束形成研究
- 无法更新 EntitySet“Ips_Articles”,因为它有一个 DefiningQuery,而 ModificationFunctionMapping 元素中没有支持当前操作的 Inse...
热门文章
- OpenCASCADE绘制测试线束:拓扑命令之曲线和曲面拓扑
- OpenCASCADE:建立Body
- 使用 Boost.MPI 的 reduce() 计算最小值的示例
- boost::log::sinks::text_ipc_message_queue_backend用法的测试程序
- boost::core::bit_cast的测试程序
- Boost:bind绑定boost::apply的测试程序
- Boost:宏BOOST_ASSERT的使用实例
- ITK:从二进制图像中的对象计算距离图
- ITK:打开一个二进制图像
- 使用Qt Designer编辑资源