オカレンス番号で個別のキーを選択したいのですが、このクエリは機能しているようです:
SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*)
FROM ItemMetaData
GROUP BY ItemMetaData.KEY
ORDER BY count(*) desc;
しかし、これらの結果をフィルタリングしたい、つまりcount(*)が2500よりも大きい場合にのみ、2500よりも大きいオカレンスのみが表示されるようにしたいのですが、
SELECT *
FROM
(
SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*)
FROM ItemMetaData
GROUP BY ItemMetaData.KEY
ORDER BY count(*) desc
) as result WHERE count(*)>2500;
残念ながら、このクエリは構文エラーになります。要件の達成を手伝ってもらえますか?
集計のHAVING句
SELECT ItemMetaData.KEY, ItemMetaData.VALUE, count(*)
FROM ItemMetaData
Group By ItemMetaData.KEY, ItemMetaData.VALUE
HAVING count(*) > 2500
ORDER BY count(*) desc;
having
の代わりに、グループ関数でwhere
を使用する必要があります。例えば。:
select ..., count(*) from ... group by ... having count(*) > 2500;
サブクエリを使用する必要はありません-having
句の代わりに where
句 を使用して、集計列でフィルタリングします。
SELECT
ItemMetaData.KEY, ItemMetaData.VALUE, count(*)
FROM ItemMetaData
GROUP BY ItemMetaData.KEY
HAVING count(*) > 2500
ORDER BY count(*) desc
説明は次のとおりです。WHERE
句は、個々の行に条件を導入します。 HAVING
句は、集計に条件を導入します。
GROUP BY
の前にWHERE
を使用し、GROUP BY
の後にHAVING
を使用します。これは必須ではありませんが、ほとんどの場合に役立ちます。
SELECT
ItemMetaData.KEY, ItemMetaData.VALUE, СOUNT(*)
FROM ItemMetaData
GROUP BY
ItemMetaData.KEY, ItemMetaData.VALUE
HAVING СOUNT(*) > 2500
ORDER BY СOUNT(*) DESC;