Как при группировке записей ограничить вывод

Подскажите, пожалуйста, варианты, как можно ограничить вывод при группировке по количеству записей. Например, у меня есть таблица вида: введите сюда описание изображения

И я бы хотел при группировке с помощью Group by ограничить вывод в группу, например, 3 записями с максимальными платежами.

введите сюда описание изображения

Подскажите, пожалуйста, лайфхаки, как можно ограничить количество строк в каждой группе. По ощущениям, это можно сделать, с помощью переменных, как в этом примере Ограничить кол-во записей в группе при группировке в MySQL Но вдруг есть альтернативные более простые решения.


Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

MySQL 8.0 и позже.

SQL Fiddle

SQL

CREATE TABLE tbl (server VARCHAR(20), payment INT);

INSERT INTO tbl (server, payment)
VALUES
('alpha', 87),
('alpha', 83),
('alpha', 82),
('alpha', 36),
('beta', 89),
('beta', 74),
('beta', 42),
('beta', 34);

WITH rs (server, payment, seq) AS
(
    SELECT * 
        , ROW_NUMBER() OVER (PARTITION BY server ORDER BY payment DESC) AS seq
    FROM tbl
)
SELECT * 
FROM rs
WHERE seq <= 3;
→ Ссылка