web-dev-qa-db-ja.com

最小レコード数をカウントしてユーザーを取得するSQLクエリ

いくつかのレコードと列LAST_EDIT_USERを含むテーブルがあります。すべてのユーザーの出現回数を持つすべてのユーザーを選択したい場合は、

SELECT   LAST_EDIT_USER,COUNT(LAST_EDIT_USER)
FROM     EDITED_ELEMENTS_TABLE
GROUP BY LAST_EDIT_USER
ORDER BY COUNT(LAST_EDIT_USER) ASC;

これは次のようなものを返します

NULL   0
user1  5
admin  7
USER2  11

SQLフィルターからser1(最小の出現数)-NULLを除くを取得するにはどうすればよいですか?後で編集:または発生回数が最小のユーザーのリスト

2
WDrgn

WHERE句を追加して、last_edit_user 無効です。次に、別のクエリを配置して、最小数を取得します。これをHAVING句のサブクエリとして使用して、カウントが最小に等しいもののみを取得します。

SELECT last_edit_user,
       count(last_edit_user)
       FROM edited_elements_table
       WHERE last_edit_user IS NOT NULL
       GROUP BY last_edit_user
       HAVING count(last_edit_user) = (SELECT min(c)
                                              FROM (SELECT count(last_edit_user) c
                                                           FROM edited_elements_table
                                                           WHERE last_edit_user IS NOT NULL
                                                           GROUP BY last_edit_user) x);
1
sticky bit