如何找到最常重复的列?

tct7dpnv  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(209)
ID  UserID LevelID
1   1       1
2   1       2
3   1       2
4   1       2
5   2       1
6   2       3
7   3       2
8   4       1
9   4       1

查询应返回:levelid:1(3次)-不同用户(userid)最常重复的levelid列。
我有以下疑问:

SELECT LevelID, COUNT(LevelID) AS 'Occurrence' 
FROM 
(
  SELECT DISTINCT * FROM
  (
    SELECT UserID, LevelID
    FROM SampleTable
  ) cv
) levels
GROUP BY LevelID
ORDER BY 'Occurrence'  DESC

返回:

LevelID Occurence
1        3      
2        2      
3        1

但我不能补充 LIMIT 1; 在底部检索所选内容的第一行。查询有什么问题?

ffdz8vbo

ffdz8vbo1#

不需要这几个层次的嵌套。考虑使用聚合, count(distinct ...) ,对结果进行排序,并使用行限制子句仅保留顶部记录:

select top(1) levelID, count(distinct userID) cnt
from mytable
group by levelID
order by cnt desc

如果您想允许可能的顶部领带,那么使用 top (1) with ties 而不仅仅是 top (1) .

相关问题