Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB4.DOC
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
46 Кб
Скачать
☆

Групи всередені груп

Можна також використовувати речення GROUP BY для отримування результатів по групах в середині групи.

Групові функції і індивідуальні стовбці в таблиці результатів.

Наведені вище приклади в вихідній таблиці крім кількості міст в кожній області. Такий вивід дає достатньо інформації при перегляді результатів. При включенні в вигідну таблицю стовбців, які не є аргументами агрегатних функцій слід дотримуватися наступного правила:

  • Ви можете ставити в реченні SELECT тільки ті стовбці, по яких проводиться розбиття по на групи, тобто задані в реченні GROUP BY. Можливе також задання літералів, псевдостовбців.

Інші стовбці таблиць БД в реченні SELECT при цьому заборонені.

Якщо ви хочете поставити в реченні SELECT більше одного стовбця, то всі стовбці повинні стояти і в GROUP BY, тобто бути стовбцями розбиття.

Таким чином правило, якого необхідно дотримуватися, використовуючи речення GROUP BY звучить так:

Будь-який стовбець таблиці БД, який стоїть в реченні SELECT не в груповій функції, повинен бути і в реченні GROUP BY

Речення having

Речення HAVING необхідно задавати, якщо ви хочете вибрати не всі формовані реченням GROUP BY групи, а лише частину їх по певному критерію (на групові характеристики).

Щоб визначити найпізніші дати введення міст в таблицю REGION по областях, кількість міст в яких перевищує 20 слід задати команду

SELECT PROVINCE_NAME, MAX(IN_DATE)

FROM REGION

GROUP BY PROVINCE_NAME

HAVING COUNT(*) > 20

Слід зауважити, що речення HAVING може стояти як до, так і після речення GROUP BY, однак рекомендується завжди ставити його після, так як це логічніше і зручніше для сприйняття. Групи формуються і групові функції вичисляються до виконання умов заданих в реченні HAVING.

На відміну від речення HAVING, речення WHERE не може бути використано для задання обмежень на групові функції. Можна використовувати речення WHERE тільки для задання обмежень на індивідуальні рядки таблиці. Слід зауважити, що обидва речення, кожне для своєї цілі, можуть бути задані в одній команді.

Порядок задання речень в команді SELECT

Якщо всі розглянуті теми речення задані в одній команді, то їх порядок повинен бути наступним:

SELECT стовбці

FROM таблиці

WHERE критерій пошуку на окремі рядки

GROUP BY стовбці

HAVUNG критерій пошуку на групи

ORDER BY стовбці

При виконанні команди SELECT, мова SQL використовує речення в наступному порядку:

WHERE

для вибору і відсіювання індивідуальних рядків таблиць(групові функції на можуть бути включені).

GROUP BY

для розбиття знайдених стрічок на групи.

HAVING

для вибору потрібних по критерію груп.

Вибір даних з більш ніж однієї таблиці.

З’єднання використовуються, коли SQL-запит вибирає дані з більш ніж однієї таблиці БД. Рядки одки однієї таблиці можуть бути з’днанні з стовбцями другої на основі спільності значень в визначених стовбцях.

Існує два основних типи з’єднання:

1. З’єднання порівності (Egui-join).

2. З’єднання не порівності (Non-egui-join).

З’єднання порівності

З ціллю визначення назв головних міст (обласних центрів) для кожного міста з таблиці REGION можна зв’язати таблиці PROVINCE i REGION, порівнюючи значення стовбця ID в таблиці областей PROVINCE_ID в таблиці міст. Дві таблиці з’єднуються по рівності значення поля одного типу (використовується оператор <<=>>).

Умова з’єднання задається в реченні WHERE:

SELECT стовбці

FROM таблиці

WHERE умова з’єднання

Щоб з’єднати таблиці EMP і DEPT, необхідно задати команду:

SELECT HEAD CITY, NAME

FROM PROVINCE, REGION

WHERE ID = PROVINCE;

Слід зауважити, що при співпадінні імен стовбців таблиць, по яких відбувається з’єднання необхідно в умові з’єднання через крапку справа додавати імена таблиць. Ця ж вимого поширюється і на імена стовбців в реченнях SELECT і ORDER_BY.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]