Всем привет!
ID - номер класса (1-11), NAME - название класса (класс первый - класс одиннадцатый, т.е. строка) и COUNT - сколько учеников в классе. Допустим так.
select ID, NAME, COUNT(*) from class c
group by c.id, c.name
Он выводит
1 первый класс 40
2 второй класс ....
А мне нужно в три строки
Начальная школа
Средняя школа
Младшая школа
где sum по 1-4, 5-9 и 10-11 соответственно.
То есть тут нужен case when.... having...? Как правильнее?
select case when id in (1,2,3,4) then 'Начальная школа'
when id in (5,6,7,8,9) then 'Средняя школа'
when id in (10,11) then 'Младшая школа'
end Class_type,
COUNT(*) from class c
group by Class_type
Только расставьте правильно названия для классов, а то 10,11 явно не 'Младшая школа' :-)
select case C.NUBMER when 1 then 'Начальная школа' when 2 then 'Начальная школа' when 5 then 'Средняя школа' end, sum(POSTUPILO_UCH) as VSEGO
from CLASS C
where (C.DATA between :DATA_S and :DATA_PO)
group by 1
Rphoenix,
group by case C.NUBMER when 1 then 'Начальная школа' when 2 then 'Начальная школа' when 5 then 'Средняя школа' end
или дайте ему алиас:
select case C.NUBMER when 1 then 'Начальная школа' when 2 then 'Начальная школа' when 5 then 'Средняя школа' end Class_type, sum(POSTUPILO_UCH) as VSEGO
from CLASS C
where (C.DATA between :DATA_S and :DATA_PO)
group by Class_type