根据 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];