2016-09-10 2 views
1

В настоящее время я работаю над проектом управления университетом, где я хочу рассчитать емкость каждого здания, когда дело в каждом отделе может содержать различные разделы, такие как ниже (comp и выбрать в том же здании) i написал запрос, где я получаю общую сумму мощности, которая является нежелательным моего запроса:Как рассчитать индивидуальную сумму выбранного столбца

select sum(distinct capacity) 
from classroom 
where building in (select building from department group by building) 

я получаю анс, как 660 !! Я использую сумму и различаюсь в неправильных местах в этом вложенном запросе? как получить возможность индивидуального строительства?

department 
+------------+----------+-----------+ 
| dept_name | building | budget | 
+------------+----------+-----------+ 
| Biology | Watson | 90000.00 | 
| Comp. Sci. | Taylor | 100000.00 | 
| Elec. Eng. | Taylor | 85000.00 | 
| Finance | Painter | 120000.00 | 
| History | Painter | 50000.00 | 
| Music  | Packard | 80000.00 | 
| Physics | Watson | 70000.00 | 
+------------+----------+-----------+  
classroom 
+----------+-------------+----------+ 
| building | room_number | capacity | 
+----------+-------------+----------+ 
| Packard | 101   |  500 | 
| Painter | 514   |  10 | 
| Taylor | 3128  |  70 | 
| Watson | 100   |  30 | 
| Watson | 120   |  50 | 
+----------+-------------+----------+ 

ответ

0

Поскольку вы хотите проверить только емкости зданий, которые находятся в таблице department, вам нужно для каждого building, чтобы рассчитать сумму свыше capacity и добавить exists пункта, чтобы показать только те здания, которые являются жилыми по крайней мере, одной квартирой:

select 
    building, sum(capacity) as capacity 
from classrom c 
where exists (
    select 1 
    from department d 
    where c.building = d.building 
) 
group by building 

Если вам нужно только возможности, независимо от строительства существования в department затем уронить exists пункт:

select 
    building, sum(capacity) as capacity 
from classrom 
group by building 
+0

tysm работал как шарм :) .. очистил мое сомнение – minigeek

+0

Рассмотрите [прием ответа] (http://meta.stackexchange.com/questions/5234/ how-do-accepting-a-answer-work), если вы сочтете это полезным. –

+0

как это сделать .. я недавно был подписан, и репутация не так уж много для повышения :( – minigeek

-1

Используйте следующий запрос:

SELECT building, SUM(capacity) as total_capacity 
FROM classroom 
GROUP BY building; 

Если вы хотите, чтобы убедиться, что есть по крайней мере, один отдел в этом здании затем использовать inner join

SELECT classroom.building, SUM(capacity) as total_capacity 
FROM classroom 
INNER JOIN department 
    ON classroom.building == department.building 
GROUP BY classroom.building; 
+0

ти для первого ответ, но второй запрос показывает неправильный вывод :) – minigeek

+0

Извините, я пропустил ПО ГДЕ. См. Мое редактирование. –

+0

все еще показывает тот же вывод..аноши ур и без соединения работает :) – minigeek

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