SQL使用带有聚合函数的WHERE语句

时间:2012-04-24 16:33:27

标签: sql count group-by aggregate-functions where-clause

以下代码完全按照我希望的方式运行。现在我需要实现相同的任务,但只显示COUNT大于1的结果.COUNT用于计算每个不同图书ID(出价)的分配表中的行数。

Prompt Task 1E7;
SELECT B.bid,title,COUNT(*)
FROM ALLOCATION A
INNER JOIN BOOK B
ON A.bid = B.bid
GROUP BY B.bid,title
ORDER BY COUNT(*),bid;

我试过简单地放一个WHERE COUNT(*)> 1在几个不同的位置。这只会返回WHERE行的错误“SQL命令未正确结束”。我也尝试了以下内容。

Prompt Task 1E7;
SELECT B.bid,title,COUNT(*)
FROM ALLOCATION A
INNER JOIN BOOK B
ON A.bid = B.bid
GROUP BY B.bid,title
WHERE (SELECT COUNT(*)
FROM ALLOCATION A
INNER JOIN BOOK B
ON A.bid = B.bid
GROUP BY B.bid,title) > 1
ORDER BY COUNT(*),bid;

以及任何其他数量的小调整。

3 个答案:

答案 0 :(得分:2)

可以使用HAVING

过滤聚合
SELECT  B.bid, title, COUNT(*) cnt
FROM    ALLOCATION A
INNER JOIN
        BOOK B
ON      A.bid = B.bid
GROUP BY
        B.bid, title
HAVING  COUNT(*) > 1
ORDER BY
        cnt, bid;

答案 1 :(得分:0)

您需要HAVING子句,该子句按GROUP BY

中汇总后的值进行过滤

答案 2 :(得分:0)

您需要像其他建议的海报一样使用HAVING子句。 为了将来参考,这是SQL命令的一个非常好的参考:http://www.1keydata.com/sql/sql.html