Как я могу получить несколько COUNT из одного столбца одним запросом? - PullRequest
2 голосов
/ 13 декабря 2010

В приложении, которое я написал, у меня много запросов, которые, похоже, должны быть одним ... но я не могу понять, как это сделать.

Вот пример:

SELECT SUM(enrollment) AS SchoolEnrollment, COUNT(institutionID) AS NumberOfSchools
FROM Schools
WHERE LevelID IN (4,5,6,7,8,14,15,16,20)

SELECT SUM(enrollment) AS SchoolEnrollment, COUNT(institutionID) AS NumberOfSchools
FROM Schools
WHERE LevelID IN (10,11)

Затем у меня есть четыре дополнительных запроса, которые идентичны, отличаются только по LevelID, которые включены в последнюю строку.Я в основном получаю сумму зачислений и количество школ в зависимости от того, какие классы они предлагают.

Имейте в виду, что мне нужны не только результаты (я мог просто ОБЪЕДИНИТЬ эти запросы), мне нужнознаю, какой номер какой.

Спасибо за любой совет.

Рассел Шутте

1 Ответ

7 голосов
/ 13 декабря 2010
SELECT SUM (case
                when LevelID IN (4,5,6,7,8,14,15,16,20) then enrollment
                else 0
            end) as firstEnrollmentCount,
       COUNT (case
                when LevelID IN (4,5,6,7,8,14,15,16,20) then 1
                else 0
            end) as firstNumberOfInstitutions,
       SUM (case 
                when LevelID IN (10, 11) then enrollment
                else 0
            end) as secondEnrollmentCount,

       COUNT (case
                when LevelID IN (10, 11) then 1
                else 0
            end) as secondNumberOfInstitutions,
FROM Schools

Или вы можете просто использовать GROUP BY LevelId и затем сложить результаты после того, как получите ответ обратно; с ним проще работать, если это опция:

SELECT LevelID, Count(*) FROM Schools GROUP BY LevelID

РЕДАКТИРОВАТЬ Заменили 1 на enrollment в операторе суммы, чтобы лучше отразить результаты, полученные исходными запросами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...