Мова SQL. Оператори створення та видалення об’єктів баз даних. Оператори пошуку інформації. Агрегатні функції. Вкладені запити, страница 4

Розрахункове поле задається шляхом завдання арифметичного виразу в списку опції SELECT. Новому атрибуту може бути присвоєно ім’я   конструкцією “AS <ім’я атрибута.>”. Якщо ім’я не задається , то ім’я  встановлюється автоматично. Зробимо запит до таблиць TCHS і POST, при цьому зменшимо норму навантаження викладачів на 10%. В першому випадку ім’я розрахункового поля не будемо задавати (результат нижче ліворуч) :

SELECT TCHS.CdTh, TCHS.NmTh, POST.NmPs, 0.9*[NrNv]

FROM TCHS INNER JOIN POST ON TCHS.CdPs = POST.CdPs;

у другому – задамо (результат нижче праворуч).

SELECT TCHS.CdTh, TCHS.NmTh, POST.NmPs, 0.9*[NrNv] AS NrNv_New

FROM TCHS INNER JOIN POST ON TCHS.CdPs = POST.CdPs;

CdTh

NmTh

NmPs

Expr1003

CdTh

NmTh

NmPs

NrNv_New

6

Мунтян Р.Д.

професор

540

6

Мунтян Р.Д.

професор

540

3

Середа І.С.

професор

540

3

Середа І.С.

професор

540

15

Оприско Ю.Й.

Доцент

630

15

Оприско Ю.Й.

доцент

630

11

Сірко В.В.

Доцент

630

11

Сірко В.В.

доцент

630

5

Бандура В.М.

Доцент

630

5

Бандура В.М.

доцент

630

В арифметичному виразі можуть вживатися агрегатні функції, про що буде сказано нижче.

9.3 Агрегатні функції

Агрегатні функції використовуються для отримання  загальних значень . Їх можна застосовувати до наборів (set) рядків: до всіх рядків таблиць, визначених в WHERE, або до групи рядків в GROUP BY. В будь якому випадку, незалежно від структури набору рядків, для кожного з них отримується єдине значення.

Список функції

Граматична конструкція функції

Результат (семантика) функції

SUM([DISTINCT]<вираз>)

Сума (різних) значень

AVG([DISTINCT]<вираз>)

Середня величина (різних) значень

COUNT([DISTINCT]<вираз>)

Кількість (різних) ненульових значень

COUNT(*)

Кількість вибраних рядків

MAX(<вираз>)

Максимальне значення

MIN(<вираз>)

Мінімальне значення

Приклади:

1.  Знайти середнє нормативне  навантаження викладачів до зменшення і після зменшення навантаження на 10% :

Запит для випадку „до зменшення”

SELECT Avg(POST.NrNv) AS [Avg-NrNv]

FROM TCHS INNER JOIN POST ON TCHS.CdPs = POST.CdPs;

Отримаємо

Avg-NrNv

660

Запит для випадку „після зменшення”

SELECT Avg(0.9*[NrNv]) AS Avg_NrNv_New

FROM TCHS INNER JOIN POST ON TCHS.CdPs = POST.CdPs;

Отримаємо

Avg_NrNv_New

594

Аналогічно спрацьовують функції SUM, MAX, MIN

Функції COUNT та  COUNT(*)

Не дивлячись на схожість цих функцій, вони використовуються для різних цілей.   COUNT в якості аргументу використовує стовпець та підраховує загальну кількість його ненульових значень, тоді як COUNT(*) знаходить загальну кількість рядків, незалежно від наявності в них нульових значень.

Розглянемо на прикладі. Для цього скористаємося запитом з лівим з’єднанням (він вже був наведений вище.

SELECT TCHS.CdTh, TCHS.NmTh, POST2.NmPs

FROM TCHS LEFT JOIN POST2 ON TCHS.CdPs = POST2.CdPs;

Результат запиту:

CdTh

NmTh

NmPs

3

Середа І.С.

професор

5

Бандура В.М.

доцент

6

Мунтян Р.Д.

професор

11

Сірко В.В.

доцент

15

Оприско Ю.Й.

доцент

17

Колчак А.Д.