Групування записів
Оператор SELECT дозволяє групувати значення, що повертаються. Наприклад, клієнт Іванов (C_NO=l) кілька разів замовляв у нас якийсь товар. Означає його номер зустрічається в таблиці ORDERS кілька разів. Інший клієнт також міг зробити декілька замовлень. Ми можемо згрупувати всі записи по полю C_NO (номер клієнта), а потім вивести суму замовлення кожного клієнта.
SELECT CLIENTS.FIO, SUM(ORDERS.AMOUNT) AS TOTALSUM
FROM CLIENTS, ORDERS
WHERE CLIENTS.C_NO = ORDERS.C_NO
GROUP BY ORDERS.C_NO;
Угрупування виконує оператор GROUP BY, який являетсячастью оператора SELECT. Оператора GROUP BY можна обмежити за допомогою HAVING. Цей оператор використовується для відбору рядків, GROUP BY, що повертаються. HAVING можна вважати аналогом WHERE, але тільки для GROUP BY:
HAVING <умова>
Наприклад, нас цікавлять тільки клієнти, які замовили товарів на загальну суму, що перевищує 1000.
SELECT CLIENTS.FIO, SUM(ORDERS.AMOUNT) AS TOTALSUM ' FROM CLIENTS, ORDERS WHERE CLIENTS.C_NO = ORDERS.C_NO GROUP BY ORDERS.C_NO HAVING TOTALSUM > 10 00;
У цьому запиті ми використовували псевдонім стовпця TOTALSUM. B деяких серверах SQL для визначення псевдоніма не потрібно писати службове слово AS, а деякі вимагають застосування знаку рівності:
SUM(ORDERS.AMOUNT) TOTALSUM або TOTALSUM = SUM(ORDERS.AMOUNT).
13.2.10. Сортування записів
Поки ми не встановили первинний ключ, сортування нашої таблиці не виконується. Дані будуть відображені в порядку занесення їх в таблицю. Для сортування по полю C_NO результату виведення таблиці CLIENTS використовується наступний оператор (сама таблиця при цьому не сортується):
SELECT * FROM CLIENTS ORDER BY C_NO;