根据 UserID 获取平均数
Getting Average number based on UserID
这是对之前 post 的跟进。我试图获得每个人在一个月内完成所有交易的平均天数。每个人每个月有 200 多笔交易,我们只在开票日期和发票日期之间进行交易,因此我们不必担心下个月发生的交易。
我能够使用 CASE 语句将任何带有负数的值更改为 0。每笔交易都会得出结果,所以现在我只是尝试获取每个人的数字,对它们进行平均,然后显示它们按用户名。
这是我目前得到的
SELECT [Transaction], [UserID],
CASE WHEN DATEDIFF (day, [ShippingDt], [InvoiceDate]) < 0
THEN 0
ELSE DATEDIFF (day, [ShippingDt], [InvoiceDate])
END AS DTC
FROM Transaction.table
WHERE [ShippingDt] >= '20211101' AND [ShippingDt] < '20211201'
AND [InvoiceDate] IS NOT NULL
嗯,你说要平均,所以AVG
好像比较合适,按UserID
分组:
SELECT [UserID],
AVG(CASE WHEN DATEDIFF(day, [ShippingDt], [InvoiceDate]) < 0
THEN 0
ELSE DATEDIFF(day, [ShippingDt], [InvoiceDate])
END) AS DTC
FROM Transaction.table
WHERE [ShippingDt] >= '20211101' AND [ShippingDt] < '20211201'
AND [InvoiceDate] IS NOT NULL
GROUP BY [UserID];
这是对之前 post 的跟进。我试图获得每个人在一个月内完成所有交易的平均天数。每个人每个月有 200 多笔交易,我们只在开票日期和发票日期之间进行交易,因此我们不必担心下个月发生的交易。
我能够使用 CASE 语句将任何带有负数的值更改为 0。每笔交易都会得出结果,所以现在我只是尝试获取每个人的数字,对它们进行平均,然后显示它们按用户名。
这是我目前得到的
SELECT [Transaction], [UserID],
CASE WHEN DATEDIFF (day, [ShippingDt], [InvoiceDate]) < 0
THEN 0
ELSE DATEDIFF (day, [ShippingDt], [InvoiceDate])
END AS DTC
FROM Transaction.table
WHERE [ShippingDt] >= '20211101' AND [ShippingDt] < '20211201'
AND [InvoiceDate] IS NOT NULL
嗯,你说要平均,所以AVG
好像比较合适,按UserID
分组:
SELECT [UserID],
AVG(CASE WHEN DATEDIFF(day, [ShippingDt], [InvoiceDate]) < 0
THEN 0
ELSE DATEDIFF(day, [ShippingDt], [InvoiceDate])
END) AS DTC
FROM Transaction.table
WHERE [ShippingDt] >= '20211101' AND [ShippingDt] < '20211201'
AND [InvoiceDate] IS NOT NULL
GROUP BY [UserID];