在哪里使用聚合函数

时间:2014-07-28 14:42:45

标签: sql postgresql

我在这里看到了一些类似的问题,但是我找不到符合我需要的东西。

考虑下表和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中执行此操作的正确方法是什么?

2 个答案:

答案 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;