SQLite如何查找最常见的值

时间:2014-01-27 09:35:21

标签: sql sqlite

假设我有一个带有属性X的表A. 如何找到出现次数最多的X? (可能有多个具有相同的最高发生率)

即。 表A

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

我想回来

X
--
'b'
'c'

我不能在Sqlite中使用关键字ALL,所以我不知所措。

我想到获取每个X的计数然后对它进行排序然后以某种方式使用ORDER BY DESC以使最大值位于顶部然后LIMIT进行比较以检查第一个元组下面的值是否相等(这意味着什么)它们也很常见但是我不确定LIMIT语法,如果我有这样的条件

请给出提示而不是答案,有没有我可以参考的资源,所以我可以找到方法?

4 个答案:

答案 0 :(得分:6)

这将处理具有最大出现次数的多个值

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

答案 1 :(得分:4)

一样查询
SELECT x,COUNT(x) AS cnt FROM a
GROUP BY x
ORDER BY cnt DESC;

并在cnt更改时停止处理结果行。

答案 2 :(得分:0)

如果您不知道有多少条目可能共享相同的数量,则不能使用LIMIT子句。

只需按照问题中的说明请求数据,但一次执行一次,并在返回的计数与上一行的计数不同时停止。

答案 3 :(得分:0)

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