Сукупні характеристики
Оператор SELECT дозволяє повертати не тільки множину значень полів, але і деякі сукупні характеристики, підраховані по всіх чи по зазначених записах таблиці. Одна з функцій, що повертають такі сукупні характеристики – це функція соunt(<умова>). Вона повертає кількість записів у таблиці, що задовольняють заданим умовам. Наприклад, оператор
SELECT count(*) FROM Pers
підрахує повну кількість записів у таблиці Pers. А оператор
SELECT count (*) FROM Pers WHERE Dep= ' Цех 1'
видасть число записів для співробітників цеху1.
Оператор, що використовує ключове слово DISTINCT , видасть число неповторюваних значень у зазначеному полі. Наприклад, оператор
SELECT count(DISTINCT Dep) FROM Pers
поверне число різних підрозділів, згаданих у полі Dep таблиці Pers.
Функції min(<поле>), mах(<поле>), avg(<nоле>), sum(<поле>) повертають відповідно мінімальне, максимальне, середнє і сумарне значення зазначеного поля. Наприклад, оператор
SELECT min(Year_b), max(Year_b), avg(Year_b) FROM Pers
поверне мінімальне, максимальне і середнє значення року народження, а оператор
SELECT min(2002-Year_b), max(2002-Year_b), avg(2002-Year_b) FROM Pers
WHERE Dep='Бухгалтерія'
видасть аналогічні дані, але стосовно віку тільки співробітників бухгалтерії.
В операторі SELECT можна вказувати не тільки сумарні характеристики, але і будь-які вирази від них. Наприклад, оператор
SELECT 2002- (min(Year_b)+max(Year_b))/2
FROM Pers WHERE Dep='Бухгалтерія'
видасть моду (середнє між максимальним і мінімальним значеннями) віку співробітників бухгалтерії.
При використанні сумарних характеристик треба враховувати, що в списку значень, що повертаються, після ключового слова SELECT можуть бути або поля (у тому числі що обчислюються), або сукупні характеристики, але не можуть бути і ті, і інші (без вказівки щодо групування даних). Це очевидно, тому що оператор може або повертати множину значень полів записів, або сумарні характеристики за таблицею, але не може повертати ці несумісні одне з одним дані. Тому не можна, наприклад, записати оператор
SELECT Fam, max(Year_b) FROM Регs
для визначення прізвища наймолодшого співробітника. Утім, цю задачу можна вирішити за допомогою вкладених запитів
Поєднання в одному операторі полів і сукупних характеристик можливо, якщо використовувати групування записів, що задається ключовими словами GROUP BY. Після цих ключових слів перелічуються всі поля, що входять у список SELECT. У цьому випадку зміст сукупних характеристик змінюється: вони проводять обчислення не по всіх записах таблиці, а по тих, що відповідають однаковим значенням зазначених полів. Наприклад, оператор
SELECT Dep, count(*) FROM Pers GROUP BY Dep
поверне таблицю, у якій буде 2 стовпці: стовпець з назвами відділів, і стовпець, у якому буде відображене число співробітників у кожнім відділі:
Dep
|
Count
|
Бухгалтерія
|
3
|
Цех 1
|
4
|
Цех 2
|
4
|
При групуванні записів за допомогою GROUP BY можна вводити умови добору записів з ключовим словом HAVING. Наприклад, якщо переписати наведений вище оператор у такий спосіб:
SELECT Dep, count(*) FROM Pers GROUP BY Dep
HAVING Dep < > 'Бухгалтерія'
то перший рядок у наведеній вище таблиці повинний зникнути.