Добрый день! Не могли бы вы помочь мне с запросом?
У меня есть таблица "платежей":
payments
user_id amount payment_time sale_type
1 20 31.01.2011 card
1 10 02.01.2012 cash
3 10 03.01.2012 card
4 15 05.02.2012 cash
...and so on
Задача состоит в том, чтобы выбрать общую сумму платежей за 01.01.2012 - 30.01.2012 и разделить эту сумму на группы в зависимости от суммы, когда-либо выплаченной пользователем.
Группы "0-10" - если сумма равна 0 -10 $
«10 и более» - если сумма> 10 $.
Мой код:
SELECT * from (select IFnull(t.diapason,'total') as diapason, total_amount
FROM
(SELECT p.user_id, p.amount as total_amount, CASE
when amount<=10 then '0-10'
when amount>10 then '10 and more' END AS diapason
FROM (SELECT distinct payments.user_id, SUM(amount) AS amount
FROM payments inner JOIN (SELECT DISTINCT user_id
FROM payments where payment_time between '2012-01-01'
and '2012-01-30') a ON payments.user_id = a.user_id
GROUP BY payments.user_id) p) t GROUP BY diapason WITH ROLLUP) as
t1 ORDER BY total_amount desc;
Что здесь не так?
Ожидаемый результат
diapason total_amount
0-10 10 - here is user with id 3
10 and more 10 - here is user with id 1 (because he ever payed 30)
total