问题描述
|
在mysql db中,我有一个名为time_utilize的字段,其类型为time,用于存储一天中的总时间,该表包含每个月的记录。现在,我想查找用户在所选月份的每个星期中花费的总时间。我进行了搜索,但是找到了一个很好的查询来查找整个月的总时间,即:
SELECT Sec_to_Time(Sum(Time_to_Sec(time_utilize))) FROM attendance WHERE staff_id = \'sajid\'
现在谁能找到一个月中每个星期利用的总时间?
解决方法
假设
attendance
表的日期列为attendance_date
,则以下查询可以为您提供本月每周每周使用的总时间:
SELECT WEEK(`attendance_date`) `attendance_week`,SEC_TO_TIME(SUM(TIME_TO_SEC(`time_utilize`))) `attendance_time_utilized`
FROM `attendance`
GROUP BY `attendance_week`;
在上面的查询中,attendance_week
被计算为一年中的第几周,介于1到52之间。
输出的另一种形式可能是将周显示为1,2,3,4。为此,您可以尝试以下查询:
SELECT (`attendance_week` - `min_week` + 1) `att_week`,`attendance_time_utilized`
FROM (
SELECT WEEK(`ATT`.`attendance_date`) `attendance_week`,SEC_TO_TIME(SUM(TIME_TO_SEC(`ATT`.`time_utilize`))) `attendance_time_utilized`,`T1`.`min_week`
FROM `attendance` `ATT`
INNER JOIN (SELECT MIN(WEEK(`attendance_date`)) `min_week` FROM `attendance`) T1
GROUP BY `attendance_week`
) T2;
希望以上查询对您有所帮助。请根据您的架构更改表名和列名。