[英]COUNT(DISTINCT()) OVER (PARTITION BY) in Presto (Athena)?
我在 Athena (Presto) DB 中有下表,我們稱之為 table1(針對這個問題進行了簡化):
| serverdate | colA | colB | colC | hash
|-------------------------------------------
0 | 2019-12-01 | 1 | OK | 10 | hash1
1 | 2019-12-02 | 2 | OK | 10 | hash2
2 | 2019-12-02 | 3 | NOK | 100 | hash3
3 | 2019-12-01 | 3 | OK | 0 | hash4
4 | 2019-12-03 | 6 | OK | 1 | hash5
5 | 2019-12-05 | 8 | NOK | 0 | hash6
6 | 2019-12-06 | 8 | NOK | 0 | hash6
以下查詢用於計算表中有多少不同的“哈希”:
SELECT 'users' AS Type, round(count(DISTINCT hash)) AS uu
FROM table1
這稍后用作子查詢,但對於此問題並不重要。 在這個例子中,結果應該是:
| type | uu
|-------------
0 | users | 6
我想要什么:我想做同樣的計數,但按colA對結果進行分組。 我的結果應該是這樣的:
| colA | counthash
|------------------
0 | 1 | 1
1 | 2 | 1
2 | 3 | 2
3 | 6 | 1
4 | 8 | 1
我認為在使用 COUNT(DISTINCT(hash)) OVER (PARTITION BY colA) 時,但據我所知, COUNT(DISTINCT()) 在 Presto 中不允許作為窗口函數。
關於如何做到這一點的任何想法? 謝謝。
您不應該為此需要窗口函數。 我對 presto 本身不太熟悉,但以下方法是否有效?:
SELECT colA, round(count(DISTINCT hash)) AS uu
FROM table1
GROUP BY colA;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.