2012-09-02 42 views
75

如何查找SQL表中給定列中最頻繁的值?在SQL列中查找最頻繁的值

例如,對於這個表應該返回two,因爲它是最常見的值:

one 
two 
two 
three 
+1

GROUP BY版本:http://stackoverflow.com/questions/344665/get-most-common-value-in-sql –

回答

107
SELECT  `value`, 
      COUNT(`value`) AS `value_occurrence` 
    FROM  `my_table` 
    GROUP BY `value` 
    ORDER BY `value_occurrence` DESC 
    LIMIT 1; 
+0

如果我想從'my_table'中選擇其他字段,我應該怎麼做?換句話說,另一個價值; – grep

+4

如果多個值出現相同的次數(即最大值),該怎麼辦?在這種情況下,如果三次也出現兩次? LIMIT 1將只顯示一條記錄 – mustafa1993

+0

@ mustafa1993'SELECT * FROM my_table GROUP BY value ORDER BY count(*)DESC;' –

27

試着這麼做:

SELECT  `column` 
    FROM  `your_table` 
    GROUP BY `column` 
    ORDER BY COUNT(*) DESC 
    LIMIT 1; 
+3

我不知道你可以直接在ORDER BY中使用COUNT(*)。我知道有一些關於「GROUP BY」/「HAVING」和聚合列的限制,我總是認爲這是行不通的。 –

2

對於SQL Server一起使用。

因爲沒有限制命令的支持。

呦可使用頂端的1命令查找在此情況下(值),在特定列發生的最大價值

SELECT top1 
    `value`, 
    COUNT(`value`) AS `value_occurrence` 
FROM  
    `my_table` 
GROUP BY 
    `value` 
ORDER BY 
    `value_occurrence` DESC; 
+0

您還需要將COUNT函數移至ORDER BY部分以避免出現以下錯誤: 當子查詢未與EXISTS一起引入時,只能在選擇列表中指定一個表達式 –

9

讓我們看看錶名作爲tblperson和列名作爲city。我想從城市列檢索重複最多的城市:

select city,count(*) as nor from tblperson 
     group by city 
      having count(*) =(select max(nor) from 
      (select city,count(*) as nor from tblperson group by city) tblperson) 

這裏nor是一個別名。

0

如果您不能使用LIMIT或LIMIT不是您的查詢工具的選項。你可以用「ROWNUM」來代替,但你需要一個子查詢:

SELECT FIELD_1, ALIAS1 
FROM(SELECT FIELD_1, COUNT(FIELD_1) ALIAS1 
    FROM TABLENAME 
    GROUP BY FIELD_1 
    ORDER BY COUNT(FIELD_1) DESC) 
WHERE ROWNUM = 1 
+0

MySQL沒有'ROWNUM' – Barmar

+0

這是對於oracle有效但不是mysql – Prabhu

+1

@Prabhu在MySQL中,您使用'LIMIT 1'來代替;語法顯示在接受的答案中。 – ToolmakerSteve

1

假設表爲「SalesLT.Customer」,你正在試圖找出該列「CompanyName」和AggCompanyName是一個別名。

Select CompanyName, Count(CompanyName) as AggCompanyName from SalesLT.Customer 
group by CompanyName 
Order By Count(CompanyName) Desc; 
4

下面的查詢似乎是在SQL Server數據庫的工作爲我好:

select column, COUNT(column) AS MOST_FREQUENT 
from TABLE_NAME 
GROUP BY column 
ORDER BY COUNT(column) DESC 

結果:

column   MOST_FREQUENT 
item1   highest count 
item2   second highest 
item3   third higest 
.. 
.. 
相關問題