2012-01-02 3 views
0

Я использую этот оператор MySQL, чтобы найти среднюю оценку свойства окрестности. Проблема в том, что я должен добавить инструкцию SELECT для каждой окрестности - и есть много окрестностей. Есть ли способ сделать это, не указывая «RIVER FRONT» или «OLD TOWN»? Есть ли более эффективный способ?MySQL Average: Сделать заявление более эффективным

SELECT AVG(property_table.assessment) 
FROM property_table, neighborhood_table 
WHERE property_table.id = neighborhood_table.id AND neighborhood_table.neighborhood = 'RIVER FRONT' 
    UNION ALL 
SELECT AVG(property_table.assessment) 
FROM property_table, neighborhood_table 
WHERE property_table.id = neighborhood_table.id AND neighborhood_table.neighborhood = 'OLD TOWN' 

ответ

1

Это стандартное утверждение SQL совокупности и показывает средние значения для всех окрестностей
соединения слева позволяет получить нулевые значения, где ни одно из свойств не существует в окрестностях.

SELECT 
    n.neighborhood, COALESCE(AVG(p.assessment), 0) 
FROM 
    neighborhood_table n 
    LEFT JOIN 
    property_table p ON p.id = n.id 
GROUP BY 
    n.neighborhood; 
+0

пожалуйста исправить группу по опечатке –

0
SELECT AVG(property_table.assessment), neighborhood_table.neighborhood 
FROM property_table 
INNER JOIN neighborhood_table ON property_table.id = neighborhood_table.id 
WHERE neighborhood_table.neighborhood IN ('RIVER_FRONT', 'OLD TOWN') 
GROUP BY neighborhood_table.neighborhood; 
Смежные вопросы