Group-By

SQL查詢獲取使用者,統計最小記錄數

  • July 3, 2018

我有一張包含一些記錄和一列的表格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 過濾器中獲取user1(出現次數最少)- NULL 除外?稍後編輯:或出現次數最少的使用者列表

添加一個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);

引用自:https://dba.stackexchange.com/questions/211230