Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Запросы с группировкой

УДАЛЕНИЕ ПОВТОРЯЮЩИХСЯ СТРОК (DISTINCT)

Ключевое слово distinct указывается в начале списка возвращаемых столбцов и служит для удаления повторяющихся строк из таблицы результатов запроса. С помощью этого ключевого слова можно также указать, что перед применением агрегатной функции к столбцу из него следует удалить все повторяющиеся значения. Для этого необходимо включить ключевое слово distinct перед аргументом агрегатной функции сразу же после открывающей круглой скобки.

В стандарте SQL1 говорится, что при использовании ключевого слова distinct в агрегатной функции, ее аргументом должно быть простое имя столбца; аргумент не может быть выражением. Стандарт позволяет использовать ключевое слово distinct в агрегатных функциях sum ()и avg () и не разрешает использовать его в агрегатных функциях min () и мах (), поскольку в этом нет смысла; тем не менее в ряде реализации SQL подобное все-таки допустимо. Кроме того, стандарт требует применения ключевого слова distinct в функции count (), но в ряде реализации SQL можно использовать функцию count () и без него. В функции count (*) данное ключевое слово применять нельзя, поскольку она вообще не имеет отношения к столбцам, а просто подсчитывает число строк. В стандарте SQL2 упомянутые ограничения сняты и разрешается использовать ключевое слово distinct во всех агрегатных функциях, а также применять выражения в качестве аргументов для всех функций.

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

(ПРЕДЛОЖЕНИЕ GROUP BY)

Итоговые запросы напоминают итоговую информацию, находящуюся обычно в конце отчета. Эти запросы "сжимают" подробные данные, содержащиеся в отчете, в одну строку итоговых результатов. Но, как известно, в отчетах иногда используются также промежуточные итоги. И точно так же бывает необходимо получать промежуточные итоги результатов запроса. Эту возможность предоставляет предложение group by оператора select.

Назначение предложения group by проще всего понять на примере. Рассмотрим два следующих запроса:

Первый запрос представляет собой простой итоговый запрос, аналогичный примерам, рассмотренным ранее. Второй запрос возвращает несколько итоговых строк — по одной строке для каждой группы. На логическом уровне запрос выполняется следующим образом:

1. Заказы делятся на группы, по одной группе для каждого служащего. В каждой группе все заказы имеют одно и то же значение в столбце rep.

2. Для каждой труппы вычисляется среднее значение столбца amount по всем строкам, входящим в группу, и генерируется одна итоговая строка результатов. Эта строка содержит значение столбца rep для группы и среднюю стоимость заказа для данной группы.

Запрос, включающий в себя предложение group by, называется запросом с группировкой, поскольку он объединяет строки исходных таблиц в группы и для каждой группы строк генерирует одну строку таблицы результатов запроса. Столбцы, указанные в предложении group by, называются столбцами группировки, поскольку именно они определяют, по какому признаку строки делятся на группы. Ниже приведен ряд запросов с группировкой:

Между агрегатными функциями SQL и предложением group by существует связь. Агрегатная функция берет столбец значений и возвращает одно значение. Предложение group by указывает, что результаты запроса следует разделить на группы, применить агрегатную функцию по отдельности к каждой группе и получить для каждой группы одну строку результатов.

<== предыдущая лекция | следующая лекция ==>
Агрегатные функции и значения NULL | Ограничения на запросы с группировкой
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 466; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.