我在 Teradata SQL 中有如下表:
SMS_ID | CLIENT_ID
-------------------
11 | 123
22 | 123
33 | 123
87 | 456
89 | 456
14 | 888
- “SMS_ID”列顯示發送給客戶端的短信 ID
- “CLINET_ID”列顯示接收短信的客戶端 ID
我的問題是:如何在 Teradata SQL 中計算每個 CLIENT 的平均 SMS 數?
如果我計算正確,我的示例中每個客戶端的平均短信數為 2,因為 (3 2 1) / 3 = 2
uj5u.com熱心網友回復:
首先聚合并找到每個客戶端的計數,然后子查詢并取整個表的平均值。
SELECT AVG(cnt)
FROM
(
SELECT COUNT(*) AS cnt
FROM yourTable
GROUP BY CLIENT_ID
) t;
uj5u.com熱心網友回復:
Tim 的查詢可以簡化為行數除以客戶端數:
SELECT CAST(COUNT(*) AS FLOAT) / COUNT(DISTINCT CLIENT_ID)
FROM yourTable
哪個更有效取決于您的實際資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413577.html
標籤:
上一篇:PrestoSQL類別計數器
