繁体   English   中英

COUNT(DISTINCT()) OVER (PARTITION BY) 在 Presto (Athena)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM