在哪里使用聚合函数

Sta*_*ovv 2 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);
Run Code Online (Sandbox Code Playgroud)

考虑这个查询:

SELECT a,
       sum(b)
FROM foo
GROUP BY a;
Run Code Online (Sandbox Code Playgroud)

它工作正常.我想改变该查询,以便它只匹配总和大于9的组.我的(失败)尝试是:

SELECT a,
       SUM(b)
FROM foo
WHERE SUM(b) >9
GROUP BY a;
Run Code Online (Sandbox Code Playgroud)

在postgres中执行此操作的正确方法是什么?

Mur*_*nik 5

您不能在where子句中使用聚合表达式- 这是该having子句的用途:

SELECT   a, SUM(b)
FROM     foo
GROUP BY a
HAVING   SUM(b) > 9
Run Code Online (Sandbox Code Playgroud)