2

次のコードは、私が望むとおりに実行されます。ここで、同じタスクを実行する必要がありますが、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;

そして他の数の小さな調整。

4

3 に答える 3

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;
于 2012-04-24T16:34:42.527 に答える
0

HAVINGロールアップ後に値でフィルタリングする句が必要ですGROUP BY

于 2012-04-24T16:35:23.197 に答える
0

他のポスターが提案しているように、HAVING句を使用する必要があります。今後の参考のために、これはSQLコマンドの非常に優れたリファレンスです:http ://www.1keydata.com/sql/sql.html

于 2012-04-24T16:40:02.810 に答える