Розрахункове поле задається шляхом завдання арифметичного виразу в списку опції 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 |
Колчак А.Д. |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.