さて、これは動作します:
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