Агрегирующие функции
Для получения обобщающих значений в языке SQL имеются агрегирующие функции.
Агрегирующая функция | Описание | Пример | Результат |
SUM([DISTINCT] выражение) | Сумма всех значений. | SELECT SUM(gb_id) FROM gb | 274 |
AVG([DISTINCT] выражение) | Среднее арифметическое всех значений. | SELECT AVG(gb_id) FROM gb | 13.5 |
COUNT([DISTINCT] имя_столбца) | Количество ненулевых значений. | SELECT COUNT(name) FROM gb | 16 |
COUNT(*) | Количество выбранных записей. | SELECT COUNT(*) FROM gb | 20 |
MIN(выражение) | Минимальное значение | SELECT MIN(quantity) FROM gb | 5 |
MAX(выражение) | Максимальное значение | SELECT MAX(quantity) FROM gb | 20 |
Вы можете использовать также условия отбора. Например,
результатом запроса SELECT COUNT(*) FROM gb WHERE gb_id>5 будет 18. В операторе WHERE
использовать агрегирующие функции нельзя, т.е. запрос
SELECT * FROM gb WHERE gb_id<AVG(gb_id) синтаксически неверен. Обычные функции, напрмер, косинус или синус можно.
Запрос SELECT * FROM gb WHERE COS(gb_id)>0 является синтаксически верным, хотя и не имеет
логического смысла. В агрегирующих функциях можно использовать выражения, например: SELECT AVG(2*quantity) FROM gb.
При указании ключевого слова DISTINCT повторы не будут учитываться. Можно получать несколько
значений одновременно, например: SELECT MIN(quantity) as min, MAX(quantity) as max FROM gb.
Упражнение
Напишите следующие SQL-запросы.
- Получить среднее количество выводимых сообщений на страницу для гостевых книг с
идентификатором больше 5.
- Получить количество гостевых книг, где заполнено поле name.
- Получить количество гостевых книг с заполненными полями name, email, http.
- Получить максимальный идентификатор гостевой книги.
|