【发布时间】:2012-04-24 16:33:26
【问题描述】:
以下代码完全按照我想要的方式运行。现在我需要完成相同的任务,但只显示 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;
以及任何其他数量的小调整。
【问题讨论】:
-
当你使用group by时,你通常会使用
having,而不是where。查找差异。
标签: sql count group-by aggregate-functions where-clause