КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Группировка данных
Котов Кузьма Кузьмич Порядок вывода данных
Для вывода данных, отсортированных по какому-либо столбцу, используется предложение ORDER BY. Результат выборки можно отсортировать одновременно по 16 столбцам. В Transact-SQL в предложение ORDER BY можно включать столбцы или выражения, отсутствующие в списке выборки. Сортировать можно по именам столбцов, по заголовкам столбцов, по выражению или по номеру, указывающему позицию столбца в списке выборки. Значение NULL при сортировке выводится раньше всех других. Столбцы типа Text и Image нельзя использовать в предложении ORDER BY. Следующий запрос выводит всех клиентов гостиницы в алфавитном порядке:
SELECT Фамилия, Имя, Отчество FROM Клиент ORDER BY Фамилия, Имя, Отчество
Результат запроса:
Фамилия Имя Отчество -------------------- -------------------- -------------------- Алексеев Алексей Алексеевич Артемьев Артем Павлович Владимиров Владислав Владимирович Иванов Иван Иванович Попович Алексей Егорович Сазонов Поликарп Сидорович Сидоров Сидор Сидорович Соков Эмануил Андреевич Хазанов Аристарх Абдулаевич
(10 row(s) affected)
Аналогичный результат можно получить с помощью предложения ORDER BY 1, 2, 3, в котором используются номера колонок. Для сортировки в обратном порядке можно использовать опцию DESC. Например,
SELECT Фамилия, Имя, Отчество FROM Клиент ORDER BY 1 DESC
При выполнении запросов часто требуется подсчитывать для некоторой группы какие-либо значения. Поэтому группировка данных обычно сопровождается использованием агрегатных функций (функций агрегирования). Для этой цели используется предложение GROUP BY. Эта опция имеет следующий синтаксис: GROUP BY [ALL] <Условие группировки 1> [,<Условие группировки 2>] … [,<Условие группировки N>] [WITH {CUBE | ROLLUP}]
Это предложение разделяет таблицу на наборы по значениям функций агрегирования. Эти значения называют векторами агрегирования. В некоторых диалектах SQL каждый элемент в списке GROUP BY должен обязательно присутствовать в предложении SELECT. В Transact-SQL такого строгого ограничения нет. Но следует помнить, что в Transact-SQL группировать можно только по именам столбцов. В других диалектах языка SQL в списке выражений группировки можно указывать номера столбцов (например, Visual FoxPro). Группировку можно выполнять по произвольному количеству столбцов. Директива GROUP BY позволяет сортировать значения столбцов в порядке возрастания (это стандартный способ сортировки). В отличие от директивы ORDER BY, директива GROUP BY выдает в результате список уникальных значений столбцов, (то есть эти значения не повторяются). Сходство между этими директивами заключается в том, что обе они по умолчанию упорядочивают значения столбцов по возрастанию. В следующем примере определяется список городов, в которых проживают клиенты гостиницы. SELECT Город FROM Клиент GROUP BY Город
Результат выборки:
Город -------------------- Алексеевка Владимир Иваново Казань Ковров Москва Петушки Ставрово Тверь
(9 row(s) affected)
Опции CUBE и ROLLUP. Опция CUBE используется для получения при группировке данных дополнительных строк в результате. Столбцы, включенные в опцию GROUP BY, образуют перекрестную таблицу, что позволяет получить дополнительные группы. Если для этих столбцов используются функции агрегирования (обычно суммирование), то можно получить дополнительные рассчитываемые значения. Число дополнительных групп определяется числом столбцов, включенных в опцию GROUP BY. В следующем примере выполняется подсчет количества приездов каждого клиента в гостиницу.
SELECT [Число приездов] = COUNT(*), Код_клиента FROM Проживает GROUP BY Код_клиента WITH CUBE
Результат выборки:
Число приездов Код_клиента -------------- ----------- 3 1 1 2 2 3 1 4 1 5 1 6 1 7 2 8 1 10 13 NULL
(10 row(s) affected)
Здесь последняя строка является итоговой суммой первого столбца. Опция CUBE перебирает все варианты сочетаний столбцов. Например, при перечислении трех столбцов в опции GROUP BY получим 32-1=8 групп. Опция ROLLUP используется для однонаправленного перебора всех столбцов, используемых для агрегирования данных, без образования полного сочетания. Эти опции часто используются при подготовке данных для отчетов, графиков или диаграмм. При использовании опции GROUP BY совместно с опциями WITH CUBE или WITH ROLLUP можно вместо максимально допустимых 16 групп определить только 10. С опциями CUBE и ROLLUP нельзя использовать предложение GROUP BY ALL.
Дата добавления: 2014-11-20; Просмотров: 497; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |