Mysql запрос на получение ежемесячно n-го покупателя с самыми высокими расходами - PullRequest
0 голосов
/ 18 апреля 2020

Я использую таблицу выплат sakila. Столбцы: payment_id, customer_id, staff_id, rental_id, сумма, payment_date, update_date

Я использую этот запрос, чтобы заставить клиентов тратить наибольшую сумму за каждый месяц. Как получить N-го покупателя с самым высоким уровнем расходов за каждый месяц?

select customer_id,`month`,max(total_amount) from
(SELECT customer_id,count(customer_id) as `count`,month(payment_date) as `month`,sum(amount) as total_amount 
FROM sakila.payment
group by month(payment_date),customer_id 
order by `month` asc, `total_amount` desc)t
group by `month`

1 Ответ

0 голосов
/ 18 апреля 2020

Попробуйте следующее, если вы используете MySQL 8.0, то оно будет работать с row_number()

select 
    customer_id,
    month,
    total_amount
from
(
    select 
        customer_id,
        month,
        total_amount,
        row_number() over (partition by month order by total_amount desc) as rnk
    from
    (
        select 
            customer_id,
            count(customer_id) as `count`,
            month(payment_date) as `month`,
            sum(amount) as total_amount,
        from sakila.payment
        group by 
            month(payment_date),
            customer_id 
    ) cal
) mnt

where rnk = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...