Всем доброго времени суток, и давайте c вами рассмотрим основные агрегатные функции SQL на примерах.
Допустим у нас есть стандартная таблица с товарами и их ценами:
id tovar summa
========================================================
1 tovar1 1000
2 tovar2 10000
3 tovar3 2000
4 tovar4 1000
5 tovar5 3000
6 tovar6 3500
=========================================================
и первые функции которые мы с вами рассмотрим будут доставать из базы минимальное и максимальное значение поля summa:
SELECT MIN(`summa`), MAX(`summa`) FROM `tovar`
Как видите запрос нам вернул минимальное(1000) и максимальное(10000) значения поля summa из таблицы tovar. Это мы сделали благодаря использованию агрегатных функций MIN() и MAX(), то есть минимум и максимум, аргументом которых является поле из которого мы достаем значение.
С этим я думаю все понятно, поехали дальше.
Следующая функция которую мы с вами рассмотрим будет касаться суммы всех значений поля.
SELECT SUM(`summa`) FROM `tovar`
Результатом данного запроса будет общая сумма значений(20500) поля summa. И здесь мы использовали функцию SUM() аргументом которой было поле summa.
Функция COUNT() считает количество строк и в качестве ее аргумента мы можем использовать либо название поля или '*'.Рассмотрим на следующем запросе:
SELECT COUNT(`summa`) FROM `tovar`
и
SELECT COUNT(*) FROM `tovar`
как видите в обоих запросах нам вернулось значение 6, и это количество строк в таблице tovar.
Бывают ситуации когда нам необходимо получить среднее значение какого-нибудь поля.
Для этого существует функция AVG()
SELECT AVG(`summa`) FROM `tovar`
Результат 3416.6667 и мы можем это проверить используя уже полученные знания следующим запросом:
SELECT SUM(`summa`) / COUNT(`summa`) FROM `tovar`
Как видите результат у нас точно такой же 3416.6667 , то есть функция AVG() работает коректно.
И напоследок я хотел бы вам показать еще как избавиться от повторяющихся значений в полях. Допустим нам необходимо достать из таблицы tovar все категории цен , и как мы знаем у нас там есть повторяющиеся значения и для того чтобы их исключить. Существует специальное предложение DISTINCT, сразу оговорюсь это не функция.
Рассмотрим данное решение:
SELECT DISTINCT `summa` FROM `tovar`
Как видите нам из таблицы вернулись все наши категории цен товаров. И там нет повторяющихся значений!
Вот и все дорогие друзья! Думаю что данная статья была для вас полезна и вы узнали а ней что то новое, а если и нет, тогда освежили свои знания.
Всего доброго и удачи!