Классика баз данных - статьи

       

В следующем примере для этой


В следующем примере для этой цели используется "(-all-)". Нужно помнить, что в выражении CASE все возможные значения выражения должны иметь совместимые типы. В примере было необходимо использовать функцию char внутри CASE для преобразования year(birthdate) из целого типа в тип символьных строк, чтобы его тип был совместим со строкой "(-all-)".

SELECT CASE grouping(sex) WHEN 1 THEN '(-all-)' ELSE sex END AS sex, CASE grouping(year(birthdate)) WHEN 1 THEN '(-all)' ELSE char(year(birthdate)) END AS birth_year, max(income) AS max_income FROM census GROUP BY CUBE(sex, year(birthdate));

В таблице 5 показаны результаты этого запроса. Операция CUBE, примененная к n измерениям, будет генерировать 2n различных видов групп. Так, GROUP BY CUBE (sex, year(birthdate)) произвела бы трехмерный результат, содержащий восемь видов групп. К каждой группе можно обычным образом применить раздел HAVING.



SEX BIRTH_YEAR MAX_INCOME





























F 1955 46700
F 1956 36300
F 1957 26500
F (null) 44700
M 1955 32100
M 1956 42500
M 1957 40200
F (-all-) 46700
M (-all-) 42500
(-all-) 1955 46700
(-all-) 1956 42500
(-all-) 1957 40200
(-all-) (null) 44700
(-all-) (-all-) 46700


Таблица 5. Результаты запроса с CUBE


Содержание  Назад  Вперед