Я использую базу данных MySQL. Я ищу, чтобы создать рейтинг клиентов с каждым месяцем за последние 6 месяцев.MySQL - Звание за месяц по нескольким месяцам
У меня только следующий запрос, чтобы определить ранг клиента в ежемесячном опросе. Это правильно сообщает ранг, только если диапазон дат за один месяц.
select
t1.*,
@rownum := @rownum + 1 AS RANK
from
(
select
date_format(EVE_DATE,'%Y-%m') as MON_DATE,
CUST,
SUM(POLL) as SCORE
from
TABLE
where
EVE_DATE >= '2016-01-01' and EVE_DATE <= '2016-01-31'
group by
MON_DATE,
CUST
order by
SCORE desc
)t1,
(SELECT @rownum := 0) r
order by
RANK DESC
Проблема у меня есть, если бы я изменить диапазон дат, чтобы охватить на несколько месяцев, то ранг показано не так. Я выкопал немного глубже. & понимает, что проблема связана с тем, что, когда количество дней в месяцах, каждый клиент получает список столько раз, сколько количество месяцев. Таким образом, количество строк на выходе равно number_of_customers * number of months
, что означает, что ранг в месяц больше не имеет значимого значения.
Например, если есть 100 клиентов &, если я должен был рассчитать ранг на один месяц, максимальный ранг, который у меня может быть, равен 100, что является правильным. Однако, если я рассмотрел 2 месяца, ранг может варьироваться от 1 до 200, что является неправильным. Это связано с тем, что всего 100 клиентов, но они появляются дважды из-за 2 месяцев рассмотрения.
Как я могу исправить нижеследующий запрос, чтобы правильно оценить ранг в месяц?
select
t2.*
from
(
select
t1.*,
@rownum := @rownum + 1 AS RANK
from
(
select
date_format(EVE_DATE,'%Y-%m') as MON_DATE,
CUST,
SUM(POLL) as SCORE
from
TABLE
where
EVE_DATE >= (curdate() - INTERVAL 3 MONTH)
group by
MON_DATE,
CUST
order by
SCORE desc
)t1,
(SELECT @rownum := 0) r
order by
RANK DESC
)t2
where
t2.CUST= 'customerA'
order by
t2.MON_DATE desc
Буду признателен за любую помощь здесь, чтобы получить меня, пожалуйста.
Спасибо Гордон. Если бы я упустил дату, я не получу рейтинг в месяц, как я вижу. Как я могу сделать это с группой по месяцам, пожалуйста? – usert4jju7