首页 > 解决方案 > MySQL考勤计算

问题描述

在这里,我有餐桌出席

在此处输入图像描述

我需要如下所示的结果

在此处输入图像描述

我如何在不使用任何编程语言的情况下在 mysql 中实现这一点

Sql 文件是Attendances.sql

标签: mysqlsql

解决方案


我们可以尝试一种透视查询方法,按用户和日期聚合:

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如果一个时期可以跨越日期,那么我的回答可能不会产生正确的结果。此外,如果缺少INorOUT值,则将NULL报告该hours值。


推荐阅读