我在这里看到了一些类似的问题,但是我找不到符合我需要的东西。
考虑下表和exapmle数据:
CREATE TABLE foo(a int, b int);
INSERT INTO FOO VALUES(1, 3);
INSERT INTO FOO VALUES(1, 3);
INSERT INTO FOO VALUES(1, 4);
INSERT INTO FOO VALUES(2, 5);
INSERT INTO FOO VALUES(2, 3);
INSERT INTO FOO VALUES(3, 10);
考虑这个问题:
SELECT a,
sum(b)
FROM foo
GROUP BY a;
工作正常。我想改变该查询,以便它只匹配总和大于9的组。我的(失败)尝试是:
SELECT a,
SUM(b)
FROM foo
WHERE SUM(b) >9
GROUP BY a;
在postgres中执行此操作的正确方法是什么?
答案 0 :(得分:5)
您不能在where
子句中使用聚合表达式 - 这是having
子句的用途:
SELECT a, SUM(b)
FROM foo
GROUP BY a
HAVING SUM(b) > 9
答案 1 :(得分:0)
尝试使用“having”子句!
SELECT a,
SUM(b) FROM foo
GROUP BY a having sum(b) > 9;