2013-09-10 2 views
0

У меня есть следующая таблица в MYSQL с данными выборки:получить среднее из двух отдельных столбцов, соединяющих другие таблицы в MySQL

Table1:

id type locid month qty 
1  car1  1  JAN  2 
2  car1  1  FEB  1 
3  car1  2  JAN  3 
4  car1  2  MAR  2 
5  car2  1  FEB  2 
6  car2  1  MAY  5 

Table2 :

id location 
1  CA 
2  NY 

Мне трудно получить среднее значение количества из двух разных столбцов, которые являются типом и местоположением. Можно ли вычислить среднее значение за последние 3 месяца?

Вот результат я хотел бы выполнить:

type  CA_AVE  NY_AVE 
----------------------------- 
car1  1.5   2.5 
car2  2 <-- assumed the current month is MARCH so the qty for MAY should 
        not be included to get the average 
+0

Я думаю, что лучше, чтобы привести к строкам, а не столбцы (что, если у вас есть 200 мест, а не только 2?). Это имеет значение? Кроме того, непонятно, что такое «последние 3 месяца». У вас нет значения 'APR'. Итак, это будет 0 за апрель? Или это будет 'MAY',' MAR', 'FEB'? –

+0

Я думал об этом как о строках с учетом количества мест, которые будут добавлены. Последние 3 месяца в формате MAY, MAR, JAN. – Sam

ответ

0

Это ваш ответ. , но вы должны учитывать, что месяц - это не марш b/c, который я использовал сейчас(). okey. поэтому соответствующим образом измените данные таблицы и проверьте результат.

select AVG(loc) as loc,AVG(qty) as qty from tbl1 where month NOT IN (concat(UCASE(DATE_FORMAT(date_add(now(), INTERVAL -1 MONTH),'%b')),',', 
     UCASE(DATE_FORMAT(date_add(now(), INTERVAL -2 MONTH),'%b')),',', 
     UCASE(DATE_FORMAT(date_add(now(), INTERVAL -3 MONTH),'%b')))) group by type 

Для DEMO Нажмите здесь: - http://sqlfiddle.com/#!2/2a15e/15

+0

Я меняю таблицу в соответствии с желаемым форматом и получил результат. благодаря – Sam

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