У меня есть следующая таблица в базе данных Athena (Presto), назовем ее 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
Следующий запрос используется для подсчета количества различных "га sh "находятся в таблице:
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 (ha sh)) OVER (PARTITION BY colA), но, насколько я знаю, COUNT (DISTINCT () ) не допускается в качестве оконной функции в Presto.
Есть идеи, как это сделать? Спасибо.