- •6. 1. Опис мови sql
- •6. 2. Адміністрування баз даних
- •6. 3. Типи даних в sql
- •6. 4. Визначення даних засобами sql
- •6. 5. Відбір даних із таблиць засобами sql
- •6.5.1. Управління полями таблиці з допомогою оператора select
- •6.5.2. Використання простих критеріїв відбору записів із таблиць
- •6.5.3. Використання складених критеріїв відбору записів із таблиць
- •6.5.4. Агрегування даних. Sql-функції
- •6.5.5. Сортування записів
- •6.5.6. Зв’язування таблиць
- •6.5.7. Вкладені запити
- •6. 6. Використання математичних та рядкових функцій
6.5.3. Використання складених критеріїв відбору записів із таблиць
При відборі можна використовувати декілька операцій, задаючи тим самим складені критерії відбору записів. Складений критерій (логічний вираз) складається з:
простих умов;
логічних операцій: AND (логічне І), OR (логічне АБО), NOT(логічне НЕ);
круглих дужок.
В мові SQL пріоритет операцій порівняння вищий за пріоритет логічних операцій. Для зміни порядку виконання операцій використовуються круглі дужки.
Приклади запитів із складеним критерієм відбору:
select prizv
from stat
where osvita = ‘вища’ and adressa =’Львів’
Даний запит відбирає прізвища працівників, які мають вищу освіту і домашня адреса – Львів.
select prizv
from stat
where osvita = ‘вища’ or osvita = ‘cередня’
Цей запит відбирає прізвища та імена працівників, які мають вищу або середню освіту.
select prizv
from stat
where (osvita = ‘вища’) and
(data_nar between ‘01.01.1960’ and ‘01.12.1980’)
Запит відбирає прізвища працівників, які мають вищу освіту і народилися в період з 1 січня 1960 року до 1 грудня 1980. У даному логічному виразі прості умови записані у дужках, але це не обов’язково, так як пріоритет операцій порівняння вищий від пріоритету логічних операцій.
6.5.4. Агрегування даних. Sql-функції
В SQL існує ряд стандартних функцій (SQL-функцій). Крім спеціального випадку функції COUNT(*) кожна з цих функцій оперує сукупністю значень поля деякої таблиці і створює єдине значення, яке визначаються так: COUNT - кількість значень в полі, SUM – загальна сума в полі, AVG - среднє значення поля, MAX - найбільше значення поля, MIN - найменше значення поля. Для функцій SUM и AVG поле повинно бути числового типу. Зауважимо, що тут поле - це поле віртуальної таблиці, в якій можуть міститися дані не тільки з поля базової таблиці, але й дані, отртимані шляхом функціонального перетворення й(або) зв’язування символами арифметичних операцій значень з одного або декількох полів. Із SQL-функцій можно складати будь-які вирази. Перед аргументами всіх функцій, крім COUNT(*), можна ставити ключове слово DISTINCT (різний), яке вказує, що значення, які дублюються, повинні бути виключені перед тим, як буде застосовуватися функція. Спеціальна функція COUNT(*) служить для підрахунку всіх без виключення рядків в таблиці (включаючи дублікати).
Записи набору даних можуть бути згруповані за деякою ознакою. Групу утворюють записи з однаковими значеннями в полях, перелічених в списку операнда GROUP BY.
Групування записів автоматично виключає повтор значень в полях, заданих для групування, так як записи із співпадаючими значеннями цих полів об’єднуються в одну групу.
Приклад запиту з групуванням записів:
select data_nar, count (data_nar)
from stat
where data_nar between ‘01.01.1960’ and ‘01.01.1980’
group by data_nar
Для кожної дати із вказаного періоду виводиться кількість записів, де вона зустрічається. Якщо не виконати групування, то в набір даних попадуть всі записи, а при групуванні всі записи отриманого набору даних унікальні. Функція COUNT виводить для кожної групи (сформованої по полю дати) кількість записів у групі.
У результаті виконання запиту
select cod, sum (suma)
from obsag
group by cod
виведеться загальна сума операцій, виконаних кожним рекламним агентом.
Максимальну суму операції кожного рекламного агента можна вибрати з допомогою запиту:
select cod, max (suma)
from obsag
group by cod
