在mysql列中找到第n个最常出现的值

时间:2015-10-17 22:43:45

标签: mysql sql

我有一张桌子:

alphabet occurrence

a 22
b 22
c 21
d 12
a 22
g 20
h 11
c 22
b 32

如何使用SQL命令在此表中查找第3个最常出现的值。\

我使用的是:

  

按事件从mytable组中选择出现,COUNT(出现)   按计数(发生)desc限制3;

output expected:
if n = 3
c count(occurrence of c) 
c 43

2 个答案:

答案 0 :(得分:3)

这样做的一种方法是在选择行时对行进行计数并过滤掉该选择

SELECT letter, SUM(occurances) as num_occ, @A := @A + 1 as row_count
FROM occ, (select @A := 0) t
GROUP BY letter 
HAVING row_count = 3
ORDER BY num_occ DESC;

这是一种做到这一点的hacky方式。但由于你在桌子上没有ID,所以替代

并不多

FIDDLE DEMO

编辑: 在更好地理解了这个要求之后,这是另一种选择。

SELECT letter, SUM(occurances) as num_occ
FROM occ
GROUP BY letter 
ORDER BY num_occ DESC
limit 2, 1; -- 2 is the 3rd row position wise starting at 0 (think of an array)

FIDDLE

答案 1 :(得分:0)

您可以使用偏移来选择第n行 这是选择第n个最常出现的字母表的代码。

-13