2013-03-18 3 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 예를 도시 2의

bus_type_id | pollution_output 
1    3 
2    7 

이 (route_id 1) bus_type 1 하루에 다섯 번 하루에 한 네 번 bus_type에 노출 (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 
관련 문제