COUNT (DISTINCT ()) более (PARTITION BY) в Престо (Афина)? - PullRequest
0 голосов
/ 15 января 2020

У меня есть следующая таблица в базе данных 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.

Есть идеи, как это сделать? Спасибо.

1 Ответ

1 голос
/ 15 января 2020

Для этого вам не нужна оконная функция. Я не слишком знаком с presto как таковым, но работает ли следующее:

SELECT colA, round(count(DISTINCT hash)) AS uu
FROM table1
GROUP BY colA;
...