這更像是一個概念性問題。我試圖比較今年和去年的銷售額。但是比較應該是動態的,因為今年我考慮了直到昨天發生的銷售額,我還需要考慮前一年到去年同一天的銷售額。
例如,今天是 12 月 24 日,因此對于 2021 年,我將銷售額匯總到 12 月 23 日,我也需要對 2020 年進行同樣的操作,即到 2020 年 12 月 23 日。對于明天的報告,匯總應該到 2021 年 12 月 24 日和 2020 年 12 月 24 日。
到目前為止我的代碼:
SELECT product_category,
SUM(CASE WHEN purchase_date >= '2021-01-01' AND purchase_date < CURRENT_DATE THEN sales_revenue ELSE 0 END) AS revenue_2021,
SUM(CASE WHEN purchase_date >= '2020-01-01' AND purchase_date < '2021-01-01' THEN sales_revenue ELSE 0 END) AS revenue_2020
FROM sales_table
GROUP BY 1
ORDER BY 1
在這里,對于 2021 年,我的代碼有效。但對于 2020 年,它將給出全年(2020 年)的總和。無論如何,我是否可以像在 2021 年一樣,在 2020 年實作這種動態?
uj5u.com熱心網友回復:
SELECT product_category,
SUM(CASE WHEN purchase_date >= DATEADD(yy, DATEDIFF(yy, 0, CURRENT_DATE), 0)
AND purchase_date < CURRENT_DATE THEN sales_revenue ELSE 0 END) AS revenue_2021,
SUM(CASE WHEN purchase_date >= DATEADD(yy, DATEDIFF(yy, 0, CURRENT_DATE)-1, 0) AND purchase_date < dateadd(yy, -1, CURRENT_DATE) THEN sales_revenue ELSE 0 END) AS revenue_2020
FROM sales_table
WHERE
purchase_date >= DATEADD(yy, DATEDIFF(yy, 0, CURRENT_DATE)-1, 0)
GROUP BY 1
ORDER BY 1
uj5u.com熱心網友回復:
我自己想出了這個,這似乎有效。
SELECT EXTRACT(YEAR FROM DATE_TRUNC('YEAR',purchase_date) AS Year,
product_category,
SUM(sales_revenue)
FROM sales_table
WHERE DATE_PART('MONTH',purchase_date)*100 DATE_PART('DAY',purchase_date_time)
< DATE_PART('MONTH',CURRENT_DATE)*100 DATE_PART('DAY',CURRENT_DATE)
GROUP BY 1,2
ORDER BY 1,2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/392799.html
上一篇:從列中選擇第一個和最后三個字串作為conditionSQL
下一篇:BangDB圖表
