仅显示最频繁的数字sql

wfsdck30  于 2021-08-13  发布在  Java
关注(0)|答案(4)|浏览(345)

如何仅显示最高值?即使有这样一个领带,有没有使用sqllite使用max count呢

SELECT GAMEID,
       COUNT(GAMEID) 

  FROM GAMES
 GROUP BY GAMEID
 ORDER BY COUNT(GAMEID) DESC
pqwbnv8z

pqwbnv8z1#

如果您希望有多行具有相同的计数,那么可以使用窗口函数来执行此操作并处理这些关系。
您没有指定dbms产品,但以下是100%ansi标准sql:

SELECT *
FROM (
    SELECT gameid,
           count(*),
           dense_rank() over (order by count(*) desc) as rnk
    FROM games
    GROUP BY gameid
) t
WHERE rnk = 1

在线示例

h9vpoimq

h9vpoimq2#

由于听起来您使用的是过时的sqlite版本,无法使用窗口函数,因此下面是另一种处理关系的方法:

WITH counted AS (SELECT gameid, count(gameid) AS count FROM games GROUP BY gameid)
SELECT gameid, count
FROM counted
WHERE count = (SELECT max(count) FROM counted);
aor9mmx1

aor9mmx13#

您可以将“limit1”添加到查询的末尾,它将只显示一个结果。但是,如果两个条目有相同的结果,那么显示哪一个是任意的。

5jdjgkvh

5jdjgkvh4#

如果你不在乎领带,那就用吧 LIMIT :

SELECT GAMEID, COUNT(GAMEID) AS CNT
FROM GAMES
GROUP BY GAMEID
ORDER BY COUNT(GAMEID) DESC
LIMIT 1;

如果你想找到拥有最高计数的游戏,包括可能的平局,那么 RANK 分析函数在这里提供了一个选项:

WITH cte AS (
    SELECT GAMEID, COUNT(GAMEID) AS CNT, RANK() OVER (ORDER BY COUNT(GAMEID) DESC) rnk
    FROM GAMES
    GROUP BY GAMEID
)

SELECT GAMEID, CNT
FROM cte
WHERE rnk = 1;

相关问题