需求:用presto跑sql的时候,发现group by去重之后直接count不是总条数,而是按照group by key的key分组之后的条数,万万没想到啊。因为语句执行顺序是group by 再count,所以按理说不应该,但是实际上这是一个需要注意的坑,最好在外面包一层。曾一度怀疑是presto和hive语法的差异,但实际上sql就有这么一个坑。
下面用三个sql例子说明
-
例子1:
-
例子2:
-
因为涉及到group by执行顺序在select 之前,所以没成想它会按照key分组计数,看来group by成立的初衷还是结合聚合使用,所以在用到group by去重的时候,要在外面包一层再做操作,避免产生影响 -
例子3:
包一层就行了