簡體   English   中英

MySQL有幾個日期范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM