2017-08-21 68 views
0

我想寫一個SQL查詢,我發現最常出現的值。使用SQL查詢獲得最頻繁的值

到目前爲止,我有這樣的:

SELECT GENRE, COUNT(*) AS Frequency 
FROM BooksRead 
GROUP BY GENRE 

這給我的輸出是這樣的:

Anthropological   1 
Biography    7 
Crime     4 
Essay     2 

我想返回的結果是7,我用TOP 1試過,但我Java編譯器似乎並不喜歡它。

+0

用您正在使用的數據庫標記您的問題。 –

回答

0

的ANSI SQL語法是:

SELECT GENRE, COUNT(*) AS Frequency 
FROM BooksRead 
GROUP BY GENRE 
ORDER BY COUNT(*) DESC 
FETCH FIRST 1 ROW ONLY; 

並非所有的數據庫都支持這種語法。許多支持LIMIT

SELECT GENRE, COUNT(*) AS Frequency 
FROM BooksRead 
GROUP BY GENRE 
ORDER BY COUNT(*) DESC 
LIMIT 1; 

但是,確切的語法取決於您所使用的數據庫。如果你想聯繫然後使用RANK()代替ROW_NUMBER()

SELECT * 
FROM (SELECT GENRE, COUNT(*) AS Frequency, 
      ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) as seqnum 
     FROM BooksRead 
     GROUP BY GENRE 
    ) g 
WHERE seqnum = 1; 

您還可以使用ANSI標準窗口功能。

+0

謝謝!這很好。 – beh1