mysql - MySQL考勤计算
解决方案
我们可以尝试一种透视查询方法,按用户和日期聚合:
SELECT
user_id,
DATE(date_time) AS date,
TIMESTAMPDIFF(MINUTE,
MAX(CASE WHEN status = 'IN' THEN date_time END),
MAX(CASE WHEN status = 'OUT' THEN date_time END)) / 60.0 AS hours
FROM yourTable
GROUP BY
user_id,
DATE(date_time);
这个答案的警告很多。它假设每个用户每天只有一个IN
和条目。OUT
如果一个时期可以跨越日期,那么我的回答可能不会产生正确的结果。此外,如果缺少IN
orOUT
值,则将NULL
报告该hours
值。
推荐阅读
- python - 使用 Python,如何将 FTP 服务器上的子目录中的多个文件下载到本地机器上所需的目录中?
- angularjs - 农业网格中的复选框选择不起作用
- angular - 强制 mat-expansion-panel 溢出容器元素
- javascript - 如何在加载 Javascript 时设置元素值和运行函数
- discord.net - Discord.net 在多个物理服务器上为同一个机器人运行单独的分片
- twilio - 如何使用 Twilio 通过 SIP 客户端呼叫?
- javascript - 如何将“显示所有”页面查询添加到现有 URL?
- arraylist - Talend Open Studio 7.1:tJavaFlex 输出问题
- firefox - 页面外输出
- javascript - 显示带有传单的弹出窗口时临时删除集群