SQLite如何找到一个值出现最频繁的情况

7

假设我有一个名为A的表格,其中包含属性X。如何找到出现次数最多的X值?(可能有多个值具有相同的最高出现次数)

例如: 表格A

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

I would want to get back

X
--
'b'
'c'

我在Sqlite中无法使用ALL关键字,感到困惑。我考虑获取每个X的计数,然后对其进行排序,然后以某种方式使用ORDER BY DESC,使最大值位于顶部,然后与第一个元组以下的值进行比较,使用LIMIT检查它们是否相等(这意味着它们同样常见),但我不确定LIMIT语法以及是否可以有这样的条件。请给出提示而不是答案,是否有任何资源可供参考,以便我能找到方法?

在Oracle中,我会使用count()和Partition_by()函数。 - A Nice Guy
@Arnab SQLite的视图函数很少。 - user2864740
4个回答

10

查询相似

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

cnt 改变时停止处理结果行。


7

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

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
我怎样才能从中获取计数值,即那个2? - Syed Hamza Hassan

0

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

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


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

那会给我每个X的计数,对吧,但不是最常见的。 - nuclear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接