[英]MySQL with several date ranges
我目前的查詢:
Select `userSubUnitsID`, `userSubUnits`.`userID`, CONCAT(`u`.`fname`,' ',`u`.`lname`) AS `full`, `pID`, SUM(`quantComp`) AS `total`
From `userSubUnits`
JOIN `u` ON `u`.`userID` = `userSubUnits`.`userID`
GROUP BY `userID`
我需要的是通過約會得到這個。 所以看起來會更像這樣。
+-----+------------+----------+-------------+
|user |current week|prev week |two weeks ago|
+-----+------------+----------+-------------+
|John | 564| 354| 687|
+-----+------------+----------+-------------+
|Paul | 451| 328| 845|
+-----+------------+----------+-------------+
etc
單個查詢可以實現嗎? 我知道如何限制本周,但不知道如何在前幾周添加。
僅供參考,星期日午夜結束。 提前致謝
SELECT user, SUM(WEEKOFYEAR(datefield) = WEEKOFYEAR(now()) AS current_week,
SUM(WEEKOFYEAR(datefield) = WEEKOFYEAR(now() - INTERVAL 1 WEEK)) AS last_week,
SUM(WEEKOFYEAR(datefield) = WEEKOFYEAR(now() - INTERVAL 2 WEEK)) AS two_weeks_ago
FROM ...
GROUP BY WEEKOFYEAR(now())
丑陋,但應該做的伎倆。 請注意,如果您的日期跨越一年邊界,則此操作將失敗。 要解決這個問題,你必須添加一些額外的基於年的邏輯。
同樣,你最好還是做這種轉型的客戶端。 擴展是丑陋的,如果你需要開始做的不僅僅是幾周,那么很快就會變得非常低效,例如:
SELECT user, YEAR(datefield), WEEKOFYEAR(datefield), COUNT(*)
FROM ...
GROUP BY YEAR(datefield), WEEKOFYEAR(datefield)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.