MySQL 5.0. Библиотека программиста
Шрифт:
SELECT SUM(amount) FROM Orders WHERE customer_id = 533;
вычисляет общую сумму заказов клиента с идентификатором 533 (табл. 3.25). Таблица 3.25. Результат выполнения запроса
Далее мы рассмотрим функцию вычисления среднего значения.
AVGДанная функция возвращает среднее арифметическое значений в столбце (сумму значений, деленную на количество значений). Неопределенные значения при этом не учитываются. Если в запросе вы укажете какое-либо условие отбора, то суммирование произойдет только по тем строкам, которые удовлетворяют условию отбора. Если запросом не найдено ни одной строки или все значения в столбце равны NULL, то функция возвращает значение NULL.
Например, запросSELECT AVG(rating) FROM Customers;
возвращает
Исключить повторяющиеся значения при подсчете среднего можно с помощью параметра DISTINCT.
Например, запросSELECT AVG(DISTINCT rating) FROM Customers;
подсчитывает среднее только несовпадающих рейтингов – величину (1000 + + 1500) / 2; еще одно значение 1000, имеющееся в столбце rating, запросом игнорируется (табл. 3.27). Таблица 3.27. Результат выполнения запроса
Функцию AVG можно использовать для отбора тех значений, которые больше среднего, или тех, которые меньше среднего.
Например, запросSELECT * FROM Customers WHERE rating > (SELECT AVG(rating) FROM Customers);
выводит информацию о клиентах, чей рейтинг выше среднего (см. результат запроса в табл. 3.12). Вложенный запрос возвращает средний рейтинг клиента (см. табл. 3.26), а внешний – отбирает строки таблицы Customers, в которых значение столбца rating больше значения, возвращенного подзапросом. Отметим, что в данном случае вложенный запрос возвращает единственное значение, поэтому с оператором «больше» нет необходимости использовать ключевое слово ANY или ALL (о них рассказывалось в подразделе «Операторы сравнения с результатами вложенного запроса»).
Теперь мы рассмотрим функцию нахождения максимального значения столбца.
MAXДанная функция возвращает максимальное значение в столбце. Если в запросе вы укажете какое-либо условие отбора, то максимальное значение выбирается из строк, удовлетворяющих условию отбора. Если запросом не найдено ни одной строки или все значения в столбце равны NULL, то функция возвращает значение NULL.
Например, запросSELECT MAX(rating) FROM Customers;
возвращает наибольший из рейтингов клиентов – 1500 (табл. 3.28). Таблица 3.28. Результат выполнения запроса
Функцию MAX можно использовать для поиска строк, в которых достигается максимальное значение столбца.
Например, запросSELECT * FROM Customers WHERE rating = (SELECT MAX(rating) FROM Customers);
выводит информацию о клиентах, чей рейтинг равен максимальному (см. результат запроса в табл. 3.12).
Далее мы рассмотрим функцию нахождения минимального значения столбца.
MINДанная функция возвращает минимальное значение в столбце. Если в запросе вы укажете какое-либо условие отбора, то минимальное значение выбирается из строк, удовлетворяющих условию отбора. Если запросом не найдено ни одной строки или все значения в столбце равны NULL, то функция возвращает значение NULL.
Например, запросSELECT MIN(rating) FROM Customers;
возвращает наименьший из рейтингов клиентов – 1000 (табл. 3.29). Таблица 3.29. Результат выполнения запроса
Функцию MIN можно использовать для поиска строк, в которых достигается минимальное значение столбца.
Например, запросSELECT * FROM Customers WHERE rating = (SELECT MIN(rating) FROM Customers);
выводит информацию о клиентах, чей рейтинг равен минимальному (см. результат запроса в табл. 3.11).
Далее мы рассмотрим функцию подсчета количества значений.
COUNTДанная функция возвращает количество отличных от NULL значений, содержащихся в столбце. Если в запросе вы укажете какое-либо условие отбора, то в подсчете участвуют только строки, удовлетворяющие условию отбора. Если не найдено ни одного отличного от NULL значения, то функция возвращает значение 0.
Например, запросSELECT COUNT(rating) FROM Customers;
возвращает количество отличных от NULL значений в столбце rating таблицы Customers (табл. 3.30). Таблица 3.30. Результат
выполнения запросаПараметр DISTINCT позволяет подсчитать количество различных (уникальных) значений в столбце (при этом неопределенные значения также игнорируются).
Например, запросSELECT COUNT(DISTINCT rating) FROM Customers;
подсчитывает количество различных значений рейтинга в таблице Customers (табл. 3.31). В таблице есть две строки с одинаковым рейтингом – 1000, поэтому результат подсчета будет меньше, чем в предыдущем запросе. Таблица 3.31. Результат выполнения запроса
SELECT COUNT(*) FROM Customers;
будет больше, чем значение, выводимое запросом
SELECT COUNT(rating) FROM Customers;
(разность этих значений совпадает с количеством строк, в которых значение в столбце rating равно NULL).
Функцию COUNT можно использовать для отбора тех строк родительской таблицы, с которыми связано заданное количество строк дочерней таблицы.
Например, запросSELECT * FROM Customers
WHERE 2 < = (SELECT COUNT(*) FROM Orders
WHERE Customers.id = customer_id);выводит список клиентов, сделавших не менее двух заказов (результат запроса см. в табл. 3.14). Для каждого клиента вложенный запрос выдает количество заказов этого клиента, и если это количество не меньше двух, то текущая запись о клиенте включается в результат, выводимый внешним запросом.
Рассмотрим функции вычисления среднеквадратичного отклонения.
Функции VAR_POP, VARIANCE, VAR_SAMP, STDDEV_POP, STD, STDDEV и STDDEV_SAMPФункция VAR_POP вычисляет дисперсию значений столбца. Дисперсия характеризует колебание значений от среднего. Если a1, a2, …, an – значения столбца,
– среднее арифметическое значений столбца, то дисперсия равна
SELECT VAR_POP(rating) FROM Customers;
возвращает величину дисперсии рейтингов клиентов:
(табл. 3.32).
Таблица 3.32. Результат выполнения запросаФункция VARIANCE является синонимом функции VAR_POP.
Функция VAR_SAMP возвращает величину выборочной, или несмещенной, дисперсии (в математической статистике выборочная дисперсия является оценкой дисперсии всей изучаемой совокупности значений, при этом значения, по которым вычисляется несмещенная дисперсия, рассматриваются как выборка из изучаемой совокупности). Если a1, a2, … an – значения столбца,
– среднее арифметическое значений столбца, то значение выборочной дисперсии равно
SELECT VAR_SAMP(rating) FROM Customers;
возвращает величину выборочной дисперсии рейтингов клиентов:
(табл. 3.33).
Таблица 3.33. Результат выполнения запросаФункция STDDEV_POP вычисляет среднеквадратичное отклонение значений столбца, которое является квадратным корнем из дисперсии.
Например, запросSELECT STDDEV_POP(rating) FROM Customers;