2012-05-17 3 views
0

Ниже код работает для меня, чтобы создать таблицу, как показано ниже:Усреднение несколько столбцов внутри таблицы SQL присоединиться

SELECT reviews.style_id, AVG("col1"), AVG("col2") 
    FROM reviews, audios 
WHERE reviews.consumer_id = audios.consumer_id 
GROUP BY style_id 

enter image description here

Так что мой вопрос заключается в том, что я хотел бы усреднить col1 и col2 , не беспокоясь о значениях NULL, поскольку они не будут существовать в моей таблице. Однако мне нужно поддерживать логику соединения. Благодаря!

+2

Несвязанное примечание: вы должны использовать явный синтаксис JOIN вместо неявных в предложении WHERE. –

ответ

1

Это то, что вы хотите?

SELECT reviews.style_id, 
     (AVG("col1") + AVG("col2"))/2.0 
FROM reviews, audios 
WHERE reviews.consumer_id = audios.consumer_id 
GROUP BY style_id 
+0

Я полагаю, что трюк, предполагающий, что средние значения для col1 и col2 основаны на том же количестве строк, которым они являются. благодаря – Abram

0

В качестве альтернативы Accepted Ответа и на основании разъяснений ФПА в комментариях:

SELECT reviews.style_id, 
     Avg((col1+col2)*0.5) 
FROM reviews 
     INNER JOIN audios 
     ON reviews.consumer_id = audios.consumer_id 
GROUP BY reviews.style_id 

Это усреднение строк по построчно средним col1 и col2 дадут одинаковые результаты.

+0

Я получаю ту же таблицу вывода с этим запросом. Я хочу, чтобы Col1 и Col2 были усреднены вместе! Может быть, это невозможно? – Abram

+0

Что вы хотите получить от Avg (col1 + col2), поделитесь требуемым результатом. –

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