Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Авт_ПМП / Tema_SQL.doc
Скачиваний:
10
Добавлен:
05.02.2016
Размер:
462.34 Кб
Скачать

Сортування результату (фраза order by)

Взагалі кажучи, рядки резудьтуючої таблиці SQL-запиту не впорядковані якимось чином. Але їх можна впорядкувати певним чином, для чого в операторі SELECT використовується фраза ORDER BY. Фраза ORDER BY містить список розділених комами ідентифікаторів стовпчиків таблиць по яким потрібно впорядкувати результуючу таблицю. Фраза ORDER BY дозволяє впорядкувати вибрані записи в порядку зростання (ASC) або спадання (DESC) значення стовпчиків, незалежно від того є вони в результуючій таблиці чи ні. Але в деяких діалектах вимагається, щоб фраза ORDER BY містила лише назви стовчиків, які зустрічаються в списку виборки оператора SELECT. Отже, якщо потрібно впорядкувати результат запиту з попереднього прикладу по коду, необхідно в кінці SQL-оператора додати ORDER BY a.kod. Оператор матиме вид:

SELECT a.kod AS kod_a,a.suma AS suma_a, b.kod AS kod_b,b.suma AS suma_b

FROM table_a a LEFT JOIN table_b b ON a.kod=b.kod

ORDER BY a.kod

Результат запиту матиме вид:

kod_a

suma_a

kod_b

suma_b

1

100

1

50

1

100

1

47

1

55

1

50

1

55

1

47

1

40

1

50

1

40

1

47

2

150

2

35

2

150

2

80

2

89

2

35

2

89

2

80

3

28

NULL

NULL

а результат SQL-оператора

SELECT a.kod AS kod_a,a.suma AS suma_a, b.kod AS kod_b,b.suma AS suma_b

FROM table_a a LEFT JOIN table_b b ON a.kod=b.kod

ORDER BY a.kod, a.suma

матиме вид:

kod_a

suma_a

kod_b

suma_b

1

40

1

50

1

40

1

47

1

55

1

50

1

55

1

47

1

100

1

50

1

100

1

47

2

89

2

35

2

89

2

80

2

150

2

35

2

150

2

80

3

28

NULL

NULL

Групування результатів (фраза group by). Агрегатні функціії.

Стандарт ISO містить визначення 5 агрегатних функцій:

COUNT

Повертає кількість значень у вказаному стовпчику

SUM

Повертає суму значень у вказаному стовпчику

AVG

Повертає середнє значення у вказаному стовпчику

MIN

Повертає мінімальне значеня у вказаному стовпчику

MAX

Повертає максимальне значеня у вказаному стовпчику

Всі ці функції оперують зі значеннями одного стовпчика і повертають єдине значення. Функції COUNT, MIN, MAX можуть застосовуватись як до числових стовпчиків, так і до нечислових, а функції SUM i AVG застосовують лише до числових стовпчиків. За виключенням COUNT(*), при обчисленні значення функцій значення NULL не враховуються. Варіант COUNT(*) є особливим випадком застосування функкції COUNT. COUNT(*) повертає загальну кількість рядків результуючої таблиці, незалежно від того містяться там NULL-значення, дубльовані рядки або любі інші значення. Якщо до застосування агрегатних функцій необхідно виключити дубльовані значення, то потрібно перед іменем стовпчика, який є аргументом агрегатної функції помістити ключове слово DISTINCT, наприклад COUNT(DISTINCT kod). Слід зауважити, що не всі діалекти підтримують цю конструкцію. Скажімо Access не підтримує такого використання COUNT.

Стандарт ISO допускає використання ключового слова ALL (тобто всіх), що означає, що виключати дублі непотрібно. За змовчуванням, діє ALL.

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

SELECT kod, SUM(suma)

FROM table_a

є некоректним, поскільки назва стовпчика kod не повинна зустрічатись у списку фрази SELECT.

Приклади використання агрегатних функцій. Запит

SELECT COUNT(kod)

FROM table_a

Поверне число 6 – кількість рядків table_a. Запит

SELECT MAX(suma)

FROM table_a

поверне максимальне значення стовпчика suma – 150. Запит

SELECT MIN(suma) AS suma_min,AVG(suma) AS suma_avg

FROM table_a

поверне таку таблицю результату:

suma_min

suma_avg

28

77

де suma_min означає найменше значення стовпчика suma, а suma_avg середнє значення стовчика suma таблиці table_a. Запит

SELECT MAX(suma),MIN(suma),AVG(suma)

FROM table_a

WHERE data<#15-1-2002#

поверне, відповідно, максимальне, мінімальне і середнє значення стовпчика suma для покупок, які були здійснені до 15-1-2002року. Це числа 150, 55 і 101,666666666667 відповідно.

Соседние файлы в папке Авт_ПМП