さて、これは動作します:
SELECT DISTINCT(USER), COUNT(DISTINCT (USER)) AS numrows
FROM `sometable`
GROUP BY USER
ORDER BY USER asc
LIMIT 0, 20
私が今やらなければならないことは、結果をnumrows> Xに制限することです。埋め込まれたselectを使用して多くのソリューションを試しましたが、運がありませんでした。
SELECT
DISTINCT(USER),
COUNT(DISTINCT (USER)) AS numrows
FROM
`sometable`
GROUP BY
USER
HAVING
COUNT(DISTINCT (USER)) > 10
ORDER BY
USER asc
LIMIT 0, 20
HAVINGに似WHEREていますが、すでにグループ化されたデータに適用されます。これを使用して、要件を満たしていない一部のグループを除外できます。
DISTINCTすでにグループ化されているため、キーワードを省略できます。また、集計列から結果を除外するには、次を使用しますHAVING。
SELECT USER,
COUNT(DISTINCT USER) AS numrows
FROM sometable
GROUP BY USER
HAVING COUNT(DISTINCT USER) > ??? -- << define the value here
ORDER BY USER asc
LIMIT 0, 20
HAVINGとWHEREはキーワードをフィルタリングしていますが、違いは、フィルタリングできないHAVINGがフィルタリングされる集計関数の使用をサポートしていることです。WHERE