簡體   English   中英

在單個查詢中按多個日期范圍聚合列

[英]Aggregating a column by multiple date ranges in a single query

我有一個包含5列的MySQL表:

Device | Name | Date | Source | Income

設備名稱來源都不是唯一的。

我正在嘗試編寫SQL以獲取以下內容:

Device | Name | Source | Income (for last 3 days) | Income (for last 9 days) | Income (for last 12 days)

做這個的最好方式是什么?

您可以通過CASE語句獲取條件SUM()

SELECT Device
      ,Name
      ,Source
      ,SUM(CASE WHEN date BETWEEN UNIX_TIMESTAMP(NOW() - INTERVAL 3 day) AND UNIX_TIMESTAMP(NOW()) THEN Income END) AS Last_3_Days
      ,SUM(CASE WHEN date BETWEEN UNIX_TIMESTAMP(NOW() - INTERVAL 9 day) AND UNIX_TIMESTAMP(NOW()) THEN Income END) AS Last_9_Days
FROM YourTable
GROUP BY Device
        ,Name
        ,Source   
SELECT COUNT(*) as total_l3d FROM table WHERE DATEDIFF(Date, NOW()) <= 3
UNION
SELECT COUNT(*) as total_l9d FROM table WHERE DATEDIFF(Date, NOW()) <= 9
UNION
SELECT COUNT(*) as total_l12d FROM table WHERE DATEDIFF(Date, NOW()) <= 12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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