获取具有最大值的行

时间:2019-01-14 10:51:30

标签: sql sqlite

例如,我的桌子就这样;

name   count
----   ----
red      5
green    3
yellow   4
brown    5
purple   2
black    5

我想要这样的结果;

name   count
----    ----
black    5
brown    5
red      5

所以我想要具有最大计数的行。我怎样才能做到这一点 ? MAX()只给出一行。

3 个答案:

答案 0 :(得分:2)

一种方法是使用子查询来找到最大值,然后限制该最大值:

SELECT name, count
FROM yourTable
WHERE count = (SELECT MAX(count) FROM yourTable);

根据您的SQLite版本,您也许还可以在此处使用分析功能。来自documentation

  

窗口功能支持已添加到SQLite版本3.25.0(2018-09-15)

如果您的版本支持它,我们可以尝试使用RANK

WITH cte AS (
    SELECT name, count, RANK() OVER (ORDER BY count DESC) rnk
    FROM yourTable
)

SELECT name, count
FROM cte
WHERE rnk = 1;

答案 1 :(得分:0)

您可以在下面尝试-

select * from tablename
where count=(select max(count) from tablename)

答案 2 :(得分:0)

使用dense_rank()窗口功能

select * from 
(
select *, dense_rank() over(order by count desc) rn from table
) t where t.rn=1