2015-07-09 3 views
1

У меня есть требование, когда мне нужно выбрать среднее количество записей в течение месяца для всех дилеров. Но условие здесь заключается в том, что если у одного дилера нет записи за конкретный месяц, то его последняя запись должна быть выбрана и добавлена ​​к текущему месяцу.Выберите последнюю введенную запись в MYSQL

Требование: Выберите среднее значение для всех дилеров за месяцы между мартом и июлем.

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

My SQL:

select avg(dealer_score), month(end_time) as month from dealers where end_time>='2015-03-01' and end_time <= '2015-07-01 23:59:59' group by month(end_time) 

Выходной ток

dealer_score | month 
30 | March 
90| July 

Желаемая Выход

dealer_score | month 
30% | March 
30% | April 
30% | May 
30% | June 
90% | July 

записей в таблице дилера

dealer_id| dealer_name| dealer_score| end_time 
1| abc| 30| '2015-03-01 20:00:00 00:00:00' 
2| xyz| 30| '2015-03-01 21:00:00 00:00:00' 
3| ABC| 90| '2015-07-01 23:00:00 00:00:00' 
4| XYZ| 90| '2015-07-01 23:15:00 00:00:00' 
+1

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

ответ

0

Если вы просто хотите расширить записи для всех пяти месяцев, вы можете сделать что-то вроде:

select mon.mon, 
     (if(@a2 := @a, 
      if(@a := coalesce(avgds, @a), @a2, @a2), avgds) 
     ) as avgds 
from (select 3 as mon union all select 4 union all select 5 union all 
     select 6 union all select 7 
    ) mon left join 
    (select month(end_time) as mon, avg(dealer_score) as avgds 
     from dealer 
     group by month(end_time) 
    ) d 
    on d.mon = m.mon cross join 
    (select @a := 0) params 
order by mon; 
+0

Thankyou. Не могли бы вы дать мне знать, что здесь? а также я получаю эту ошибку «Неизвестный столбец« m.mon »в« списке полей »« –

+0

'@ a' - это переменная сеанса. 'M.mon' должен быть' mon.mon'. –

Смежные вопросы