如何使用 ROLLUP 过滤 SQL 查询

How to filter a SQL Query using ROLLUP

这个查询:

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 行。

我也累了 有分组(计数(*))> 2 但得到错误 "Cannot perform an aggregate function on an expression containing an aggregate or a subquery." 我是 SQL 的半新手,所以我不知道这是否与我正在尝试做的事情有关。

谢谢!

使用如下所示

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)