我在 MS SQL Server 中有如下表:
ID_EVENT | PRODUCT| DATE
-------------------------------
123 | A | 2021-01-15
456 | A | 2021-01-22
789 | A | 2021-02-05
110 | B | 2021-01-18
124 | B | 2021-02-11
我需要計算每個產品的平均每月(1 月和 2 月)ID_EVENT 數量。因此,我需要以下內容:
PRODUKT | AVG_PER_MNTH
-----------------
A | 1.5
B | 1
- A = 1.5,因為 3 / 2 = 1.5 -->(1 月份的 ID_EVENT 數量 2 月份的 ID_EVENT 數量)/我們分析的月份數(2 -> 1 月和 2 月)
- B = 1,因為 1 / 1 = 1 -->(1 月的 ID_EVENT 數 2 月的 ID_EVENT 數)/我們分析的月數(2 -> 1 月和 2 月)
我怎樣才能在 MS SQL Server 中做到這一點?
uj5u.com熱心網友回復:
一種選擇,首先按月和年匯總,然后按產品匯總:
WITH cte AS (
SELECT PRODUCT, 1.0*COUNT(*) AS cnt
FROM yourTable
GROUP BY PRODUCT, FORMAT(DATE, 'MM.yyyy')
)
SELECT PRODUCT, AVG(cnt) AS AVG_PER_MNTH
FROM cte
GROUP BY PRODUCT;

演示
uj5u.com熱心網友回復:
WITH CTE AS
(SELECT PRODUCT
,COUNT(*) ac cnt,
,DATEADD(month, DATEDIFF(month, 0, Date), 0) AS StartOfMonth
FROM YourTable
GROUP BY PRODUCT
,DATEADD(month, DATEDIFF(month, 0, Date), 0)
)
SELECT
PRODUCT
,AVG(cnt) as MonthlyAverage
FROM CTE
GROUP BY PRODUCT
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415823.html
標籤:
