Получение строк с максимальным значением - PullRequest
0 голосов
/ 14 января 2019

Например, мой стол такой;

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 голосов
/ 14 января 2019

Вы можете попробовать ниже -

select * from tablename
where count=(select max(count) from tablename)
0 голосов
/ 14 января 2019

использование dense_rank() оконная функция

select * from 
(
select *, dense_rank() over(order by count desc) rn from table
) t where t.rn=1
0 голосов
/ 14 января 2019

Один способ использует подзапрос, чтобы найти максимальное значение, а затем ограничивается этим максимальным значением:

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

В зависимости от вашей версии SQLite вы также можете использовать здесь аналитические функции. Из документации :

В 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...