2013-03-18 5 views
0

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

маршруты:

route_id | departure_city | destination_city | bus_type | times_per_day 
1   2    1     1   4 
2   1    3     2   2 
3   3    1     2   1 
4   1    2     1   5 
5   1    3     1   3 

bustypes:

bus_type_id | pollution_output 
1    3 
2    7 

Например, город 2 подвергается bus_type 1 четыре раза в день (route_id 1) и bus_type 1 пять раз в день (route_id 4) обеспечивая выход загрязняющих веществ 27 в день. Но мне в основном нужно рассчитать это для всех городов и вернуть максимум с максимальным загрязнением, как мне это сделать?

+0

Если решить вашу проблему, рассмотреть [принимая ответ] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

ответ

1
SELECT city, sum(pollution) AS total_pollution 
FROM (
    SELECT r.depature_city AS city 
     ,b.pollution_output * r.times_per_day AS pollution 
    FROM routes r 
    JOIN bustypes b ON b.bus_type_id = r.bus_type 

    UNION ALL 
    SELECT r.destination_city 
     ,b.pollution_output * r.times_per_day 
    FROM routes r 
    JOIN bustypes b ON b.bus_type_id = r.bus_type 
    ) AS sub 
GROUP BY city 
Смежные вопросы