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

       

аргумент содержит неопределенное значение, которое


Когда функция grouping возвращает "1", ее столбец- аргумент содержит неопределенное значение, которое следует интерпретировать как "все значения".

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

SELECT CASE grouping(state) WHEN 1 THEN '(-all)' ELSE state END AS state, CASE grouping (county) WHEN 1 THEN '(-all-)' ELSE county END AS county, CASE grouping (city) WHEN 1 THEN '(-all-)' ELSE city END AS city, count(*) AS pop, avg(income) AS avg_income FROM census GROUP BY ROLLUP(state, county, city);

В таблице 3 показаны результата запроса. Как видно, легко отличить строку, которая представляет людей в графстве Dade с неопределенными городами от строки, представляющей группу всех людей в графстве Dade независимо от города.



STATE COUNTY CITY POPULATION AVG_INCOME

































FL Dade Hialeah 2 38700
FL Dade Miami 2 36150
FL Dade (null) 2 32950
FL Orange Orlando 2 42350
FL Orange Taft 2 29550
TX Harris Baytown 2 30650
TX Harris Houston 3 37800
TX Travis Austin 2 40450
TX Travis (null) 1 34800
FL Dade (-all-) 6 35933
FL Orange (-all-) 4 35950
TX Harris (-all-) 5 34225
TX Travis (-all-) 3 38566
FL (-all-) (-all-) 10 35940
TX (-all-) (-all-) 8 36085
(-all-) (-all-) (-all-) 18 36000


Таблица 3. Результаты запроса с ROLLUP при использовании функции grouping

В запросе с ROLLUP можно также использовать разделы WHERE и HAVING. Например, следующий запрос позволяет найти число женщин и среднюю величину их дохода для каждого города, графства и штата, для которых в переписи зарегистрировано не меньше двух женщин:


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