我带有以下数据的小时表
Id | user_id | login_date | hours
1 | 123 | 01-01-2017 | 8
2 | 123 | 02-01-2017 | 6
. | ... | .......... | .
. | ... | .......... | .
. | 123 | 31-12-2017 | 7
当我从下拉列表中选择用户和日期范围时,无论如何在mysql中我是否可以通过以下方式获取数据?
Id | week_No | total_hours
1 | 1 | 40
2 | 2 | 30
. | ... |
. | ... |
. | 52 | 38
我尝试过使用PHP循环但它在数据库中查询大约52次。有没有其他方法我可以用上面提到的方式直接从mysql获取数据表,这样我们就可以节省处理时间。
答案 0 :(得分:3)
还需要使用函数WEEK从date或datetime数据类型生成周数。
查询
SELECT
id
, WEEK(login_date) AS week_No
, SUM(hours) AS hours
FROM
[table]
GROUP BY
id
, WEEK(login_date)
答案 1 :(得分:1)
答案 2 :(得分:0)
终于得到了解决方案。
SELECT (select @rownum := @rownum + 1 from ( select @rownum := 0 ) d2 ) as rownumber,
WEEKOFYEAR(login_date) as w, SUM(final_total) as final FROM `login_table`
WHERE login_date BETWEEN '2017-01-01' AND '2017-12-31' AND user_id = 470 AND
organisation_id = 191 GROUP BY WEEK(login_date) ORDER BY rownumber