我有一张桌子:
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
答案 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,所以替代
并不多编辑: 在更好地理解了这个要求之后,这是另一种选择。
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)
答案 1 :(得分:0)
您可以使用偏移来选择第n行 这是选择第n个最常出现的字母表的代码。
-13