Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Fondovi-lekcii.doc
Скачиваний:
20
Добавлен:
10.11.2018
Размер:
4.09 Mб
Скачать

2.1. Агрегатні (статистичні) функції

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

COUNT (вираз)

- ця функція обчислює кількість входжень відповідного виразу у всі рядки чи у групу рядків результуючого набору даних

SUM (вираз)

- ця функція обчислює суму значень виразу по всіх рядках чи по групі рядків результуючої таблиці

AVG (вираз)

- ця функція обчислює середнє арифметичне виразу

MAX (вираз)

- ця функція обчислює максимальне значення виразу

MIN (вираз)

- ця функція обчислює мінімальне значення виразу

Приклад 1. Обчислити кількість відпуску товару

SELECT COUNT (*)

FROM Vidpusk

Column 1

2

Приклад 2. Вивести загальну вартість відпущеного товару

SELECT SUM (V.Kilkist * T.Cina)

FROM Vidpusk V, Tovary T

WHERE V.Tovar = T.Nazva

Column 1

400.80

Приклад 3. Вивести середнє арифметичне вартості всіх відпущених товарів

SELECT AVG (V.Kilkist * T.Cina)

FROM Vidpusk V, Tovary T

WHERE V.Tovar = T.Nazva

Column 1

200.40

В усіх цих прикладах результуюча таблиця містить лише один стовпчик і лише один рядок.

Якщо із групи однакових рядків потрібно враховувати лише один, то перед виразом у дужках записують слово DISTINCT.

Приклад 4. Вивести кількість різних видів окремих одиниць вимірювань, які є на складі.

SELECT COUNT (DISTINCT Odynycia)

FROM Tovary

Column 1

3

В стандарті SQL говориться, що значення NULL агрегатними функціями ігнорується. Значення NULL відповідає невідомому або відсутньому значенню.

Нехай маємо таблицю Pracivnyky

Pracivnyky

No

Prizv

Plan

Prodano

101

102

103

104

105

106

Дід

Баба

Внучка

Жучка

Кішка

Мишка

350

300

NULL

300

275

350

367

392

75

186

286

361

Приклад 5.

SELECT COUNT (*), COUNT (Plan), COUNT (Prodano)

FROM Pracivnyky

COUNT (*)

COUNT (Plan)

COUNT (Prodano)

6

5

6

COUNT (*)

- ця функція обчислює загальну кількість рядків у таблиці

COUNT (стовпчик)

- ця функція обчислює кількість рядків, які у відповідному стовпчику не мають значення NULL

Ігнорування значень NULL не впливає на результати функцій MIN та MAX, але воно може привести до проблем при використанні функцій SUM та AVG.

Приклад 6.

SELECT SUM (Prodano),

SUM (Plan),

SUM (Prodano) – SUM (Plan),

SUM (Prodano – Plan)

FROM Pracivnyky

SUM (Prodano)

SUM (Plan)

SUM (Prodano) – SUM (Plan)

SUM (Prodano – Plan)

1667

1575

92

17

Можна було сподіватися, що вираз SUM (Prodano) – SUM (Plan) буде дорівнювати виразу SUM (Prodano – Plan), але це не так. Причиною різних результатів є рядок із значенням NULL у стовпчику Plan. Вираз SUM (Prodano) обчислює суму продаж для всіх шести працівників, а вираз SUM (Plan) обчислює суму лише п’яти значень і не враховує значення NULL. Вираз SUM (Prodano) – SUM (Plan) обчислює різницю між цими двома сумами. З іншої сторони вираз SUM (Prodano – Plan) в якості аргументів приймає лише п’ять значень, які не дорівнюють NULL, тому що в рядку, де значення запланованого об’єму продаж дорівнює NULL, будь-який вираз, який містить поле Plan отримує значення NULL. Отже, це значення функція SUM проігнорує, тобто результати цього виразу не враховують фактичні продажі працівника, для якого ще не встановлено плану, хоча вони ввійшли в результат попереднього виразу. Постає питання: яка ж відповідь є „вірною”? Обидві. Перший вираз обчислює те, що і означає, тобто SUM (Prodano) – SUM (Plan) обчислює різницю між сумарним об’ємом фактичних продаж і сумарним об’ємом планових продаж. Другий вираз означає суму різниць між фактичними та плановими продажами кожного працівника.

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