2014-01-27 424 views
4

假設我有一個具有屬性X的表A A 如何查找出現次數最多的X? (可以有多個具有相同出現頻率最高)SQLite如何查找最常見的值

即 表一

X 
-- 
'a' 
'b' 
'c' 
'c' 
'b' 

我想回去

X 
-- 
'b' 
'c' 

我不能SQLite中都使用關鍵字所以我很茫然。

我想獲得每個X的計數,然後對它進行排序,然後以某種方式使用ORDER BY DESC,以便最大值位於頂部,然後用LIMIT進行比較以檢查第一個元組下面的值是否相等意味着它們同樣常見)但我不確定LIMIT語法,如果我可以有這樣的條件

請給出一個提示,而不是答案,是否有任何資源我可以參考,所以我可以弄清楚一種方式?

+0

在oracle中我會使用計數()與Partition_by沿護理() – Arnab

+0

@Arnab SQLite是可悲短於視圖的功能。 – user2864740

回答

4

這利用具有多個值最大occurence

SELECT X FROM yourTable 
GROUP BY X 
HAVING COUNT(*) = (
        SELECT MAX(Cnt) 
        FROM(
         SELECT COUNT(*) as Cnt 
         FROM yourTable 
         GROUP BY X 
         ) tmp 
        ) 

SQL FIDDLE

0

如果您不知道先驗多少個條目可能共享相同的計數,則不能使用LIMIT子句。

只需按照您的問題中所述的方式請求數據,但一次只做一行,並在返回的計數與前一行的計數不同時停止。

0
select X, count(X) from table group by X; 
+0

這會給我每X的計數,對,但不是最常見的 – nuclear

2

查詢像

SELECT x,COUNT(x) AS cnt FROM a 
GROUP BY x 
ORDER BY cnt DESC; 

和停止處理的結果行時cnt變化。