此查询:
SELECT 1, 2, count(*)
FROM t
GROUP BY ROLLUP (1, 2)
ORDER BY 1, 2
显示:
1, 2
A Null 3
A Blue 2
A Neon 1
B NULL 2
B Navy 2
C NULL 4
C Neon 2
C Blue 2
您看到总和A = 3,B = 2和C = 4?
我想过滤以仅显示SUM大于2以及所有相关数据。所以我会看到所有A和所有C,但看不到B。
如果我添加HAVING COUNT(*)> 2 它影响所有值。我会看到第1行和第6行。
我也很累 分组(count(*))> 2 但出现错误 “无法对包含聚合或子查询的表达式执行聚合功能。”我是SQL的新手,所以我不知道这是否与我要执行的操作有关。
谢谢!
答案 0 :(得分:1)
使用情况如下所示
select a.* from
(
SELECT col1, col2, count(*) as cnt
FROM t
GROUP BY ROLLUP (col1, col2)
) a where
exists ( select 1 from
(
SELECT 1, 2, count(*) as cnt
FROM t
GROUP BY ROLLUP (1, 2)
) b where a.col1=b.col1 and b.cnt>2)