我的表中有以下数据
column1 count1
1 2
2 3
2 5
3 4
3 1
4 3
5 4
6 7
7 3
8 0
9 2
10 1
下面是我想要的输出:
id sum(count1)
1 2
2 8
3+ 25
以下是我对此使用的查询:
SELECT column1 AS id,sum(count1) FROM test
WHERE column1 < 3
GROUP BY id
UNION
SELECT '3+' AS id,sum(count1) FROM test
WHERE column1 >= 3
GROUP BY id
这是一个相当低效的方法,因为我们扫描了两次表。有没有更好的办法?
2条答案
按热度按时间bq9c1y661#
Impala 的一个简单配方是:
这不会返回
3+
. 为此,我们需要注意类型:我也发现
order by min(id)
以正确的顺序获得结果集的方便方法。s71maibg2#
你只需要简单点
GROUP BY
从句但带条件case
表达式您可以使用子查询或类似的方法来探索所需的结果