Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2012, 20:15   #1
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию Использование CASE и GROUP BY

Всем привет! Помогите пожалуйста с запросом.
Есть таблица Служащие все служащие относятся к одной из нескольких категорий (поле Категория) к примеру есть еще одно поле Возраст. Нужно разбить всех служащих по возрасту до 30 лет, от 30 до 40 лет и т.д. таким образом чтобы группировка происходила по Категории.
К примеру:
до 30 лет от 30 до 40
Категория1 ---- 3 ------ -----5
Категория2 ---- 4 ------ ----- 8

Начал с CASE написал две строки и пошел ступор.

Код:
SELECT   Категория, "Price Range" =  -- с первым параметром все ясно, 2 ой параметр я предположил что это название столбца который выводится в запросе
      CASE								
         WHEN Возраст > 18 and Возраст < 31 THEN 'здесь наверное надо прилипить как то соunt или sum, а как сообразить не могу'
      END
FROM Служащие 
GROUP BY Категория;
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Старый 17.07.2012, 20:24   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT Категория,
    SUM(CASE WHEN Возраст BETWEEN 18 AND 30 THEN 1 ELSE 0 END) AS For30,
    SUM(CASE WHEN Возраст BETWEEN 31 AND 40 THEN 1 ELSE 0 END) AS For40,
    SUM(CASE WHEN Возраст>40 THEN 1 ELSE 0 END) AS After40
  FROM Служащие
  GROUP BY Категория
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.07.2012, 20:45   #3
atenon
Форумчанин
 
Регистрация: 05.12.2009
Сообщений: 253
По умолчанию

Теперь с САSE стало все понятно. Спасибо огромное!!
Приходится бежать со всех ног, чтобы только остаться на том же месте! Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее! Льюис Кэрол
atenon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Group by and Having Progsenya SQL, базы данных 1 19.02.2011 19:18
использование оператора case 555ALEXANDR555 Помощь студентам 2 10.01.2011 16:57
GROUP BY Syltan SQL, базы данных 1 03.11.2009 13:39