Методические указания по их использованию. Пособие содержит большое количество примеров на использование операторов sql, которые могут быть полезны как на этапе освоения материала, так и выступать в качестве вопросов для самопроверки
Методичка SQL(14) (оптимизация)
Фраза GROUP BY (группировать по) инициирует перекомпоновку указанной во FROM таблицы по группам, каждая из которых имеет одинаковые значения в столбце, указанном в GROUP BY. В рассматриваемом примере строки таблицы Заказы группируются так, что в одной группе содержатся все строки для заказов с Дата=’ 2011-01-02’, в другой – для заказов с Дата=’ 2011-01-03’ и т.д. Далее к каждой группе применяется фраза SELECT. Каждое выражение в этой фразе должно принимать единственное значение для группы, т.е. оно может быть либо значением столбца, указанного в GROUP BY, либо арифметическим выражением, включающим это значение, либо константой, либо одной из агрегатных функций, которая оперирует всеми значениями столбца в группе и сводит эти значения к единственному значению (например, к сумме). Если в запросе используются фразы WHERE и GROUP BY, то строки, не удовлетворяющие фразе WHERE, исключаются до выполнения группирования. SELECT Дата, COUNT( DISTINCT ID_заказ) as Кол_заказов, COUNT( DISTINCT Блюдо) as Кол_блюд, SUM(Количество_порций) as Кол_порций FROM Заказы WHERE Дата BETWEEN ’01.01.2011’ and ’01.31.2011’ GROUP BY Дата; Отметим, что фраза GROUP BY не предполагает ORDER BY. Чтобы гарантировать упорядочение по дате результата рассматриваемого примера, следует дать запрос SELECT Дата, COUNT( DISTINCT ID_заказ) as Кол_заказов, COUNT( DISTINCT Блюдо) as Кол_блюд, SUM(Количество_порций) as Кол_порций FROM Заказы WHERE Дата BETWEEN ’01.01.2011’ and ’31.01.2011’ GROUP BY Дата ORDER BY Дата; Наконец, отметим, что строки таблицы можно группировать по любой комбинации ее столбцов. Так, по запросу SELECT Дата, Блюдо, SUM(Количество_порций) as Кол_порций FROM Заказы WHERE Дата BETWEEN ’01.01.2011’ and ’01.31.2011’ GROUP BY Дата, Блюдо ORDER BY Дата; можно на каждый день января, узнать какие блюда, и в каком количестве порций были приготовлены:
Синтаксис фразы GROUP BY GROUP BY [ALL] [ CUBE | ROLLUP] {[таблица.]столбец [, [таблица.]столбец] …} позволяет указать следующие параметры ALL – означает включение в результат выборки всех групп, независимо от того, соответствуют ли связанные с ним данные существующим в разделе WHERE условиям выборки. В строках не соответствующих условию выборки, во всех столбцах, кроме столбцов, по которым осуществляется группировка, будут выведены значения NULL.
SELECT Основа, COUNT(*) as Количество FROM Блюда WHERE Основа = 'Овощи' GROUP BY ALL Основа ROLLUP ( ) Формирует статистические строки простого предложения GROUP BY и строки подытогов или строки со статистическими вычислениями высокого уровня, а также строки общего итога. Количество возвращаемых группирований равно количеству выражений в списке элементов GROPU BY плюс один. Например, рассмотрим следующую инструкцию. SELECT a, b, c, SUM( <expression> ) FROM T GROUP BY ROLLUP(a, b, c) Для каждого уникального сочетания значений (a, b, c) , (a, b) и (a) формируется одна строка с подытогом. Вычисляется также строка общего итога.
Столбцы свертываются справа налево. Последовательность расположения столбцов влияет на выходное группирование ROLLUP и может отразиться на количестве строк в результирующем наборе. Рассмотрим пример для нашей БД.
SUM(Количество_порций) as Кол_порций FROM Заказы WHERE Дата BETWEEN ’01.01.2011’ and ’01.31.2011’ GROUP BY ROLLUP(Дата, Блюдо); CUBE ( )
Выходные данные CUBE являются группированием для всех перестановок выражений в списке элементов GROPU BY. Количество формируемых группирований равно (2n), где n — количество выражений в списке элементов GROPU BY . Например, рассмотрим следующую инструкцию. SELECT a, b, c, SUM( FROM T GROUP BY CUBE(a, b, c) Формируется одна строка для каждого уникального сочетания значений (a, b, c) , (a, b) , (a, c) , (b, c) , (a) , (b) и (c) с подытогом для каждой строки и строкой общего итога.
Выходные данные CUBE не зависят от порядка столбцов.
Download 441,57 Kb. Do'stlaringiz bilan baham: Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024 ma'muriyatiga murojaat qiling |
kiriting | ro'yxatdan o'tish Bosh sahifa юртда тантана Боғда битган Бугун юртда Эшитганлар жилманглар Эшитмадим деманглар битган бодомлар Yangiariq tumani qitish marakazi Raqamli texnologiyalar ilishida muhokamadan tasdiqqa tavsiya tavsiya etilgan iqtisodiyot kafedrasi steiermarkischen landesregierung asarlaringizni yuboring o'zingizning asarlaringizni Iltimos faqat faqat o'zingizning steierm rkischen landesregierung fachabteilung rkischen landesregierung hamshira loyihasi loyihasi mavsum faolyatining oqibatlari asosiy adabiyotlar fakulteti ahborot ahborot havfsizligi havfsizligi kafedrasi fanidan bo’yicha fakulteti iqtisodiyot boshqaruv fakulteti chiqarishda boshqaruv ishlab chiqarishda iqtisodiyot fakultet multiservis tarmoqlari fanidan asosiy Uzbek fanidan mavzulari potok asosidagi multiservis 'aliyyil a'ziym billahil 'aliyyil illaa billahil quvvata illaa falah' deganida Kompyuter savodxonligi bo’yicha mustaqil 'alal falah' Hayya 'alal 'alas soloh Hayya 'alas mavsum boyicha yuklab olish |