-1

さて、これは動作します:

SELECT DISTINCT(USER), COUNT(DISTINCT (USER)) AS numrows 
FROM `sometable` 
GROUP BY USER 
ORDER BY USER asc 
LIMIT 0, 20

私が今やらなければならないことは、結果をnumrows> Xに制限することです。埋め込まれたselectを使用して多くのソリューションを試しましたが、運がありませんでした。

4

2 に答える 2

2
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ていますが、すでにグループ化されたデータに適用されます。これを使用して、要件を満たしていない一部のグループを除外できます。

于 2013-03-25T08:15:53.057 に答える
1

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

HAVINGWHEREはキーワードをフィルタリングしていますが、違いは、フィルタリングできないHAVINGがフィルタリングされる集計関数の使用をサポートしていることです。WHERE

于 2013-03-25T08:15:38.150 に答える