如何计算 Teradata SQL 中每个客户的平均数量?

How to calculate mean number of something per client in Teradata SQL?

我在 Teradata SQL 中有 table,如下所示:

SMS_ID | CLIENT_ID 
-------------------
11     | 123   
22     | 123
33     | 123
87     | 456
89     | 456
14     | 888

我的问题是:如何在 Teradata 中计算 SQL 每个客户端的平均 SMS 数量?

如果我计算正确,在我的例子中每个客户的平均 SMS 数量是 2,因为 (3+2+1) / 3 = 2

首先聚合并找到每个客户端的计数,然后子查询并取整个 table 的平均值。

SELECT AVG(cnt)
FROM
(
    SELECT COUNT(*) AS cnt
    FROM yourTable
    GROUP BY CLIENT_ID
) t;

Tim 的查询可以简化为行数除以客户数:

SELECT CAST(COUNT(*) AS FLOAT) / COUNT(DISTINCT CLIENT_ID)
FROM yourTable

哪个效率更高,就看你的实际数据了