В следующем примере для этой
В следующем примере для этой цели используется "(-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
Содержание Назад Вперед