возвращает величину
(табл. 3.34).
Таблица 3.34. Результат выполнения запросаФункции STD() и STDDEV() являются синонимами функции STDDEV_POP().
Функция STDDEV_SAMP() вычисляет квадратный корень из выборочной дисперсии.
Например, запросвозвращает величину
(табл. 3.35).
Таблица 3.35. Результат выполнения запросаПри вычислении всех вышеперечисленных функций неопределенные значения не учитываются. Если в запросе вы укажете какое-либо условие отбора, то в вычислениях участвуют только те строки, которые удовлетворяют условию отбора. Если запросом не найдено ни одной строки или все значения в столбце равны NULL, то все эти функции возвращают значение NULL.
Далее мы рассмотрим функцию объединения строк.
GROUP_CONCAT()Функция GROUP_CONCAT() объединяет в одну строку значения столбца. При этом неопределенные значения не учитываются. Если в запросе вы укажете какое-либо условие отбора, то объединятся значения только из тех строк, которые удовлетворяют условию отбора. Если запросом не найдено ни одной строки или все значения в столбце равны NULL, то функция возвращает значение NULL.
Например, запросвозвращает строку, содержащую имена клиентов (табл. 3.36). Таблица 3.36. Результат выполнения запроса
При использовании функции GROUP_CONCAT() вы также можете указать дополнительные параметры:
• DISTINCT – исключает при объединении повторяющиеся значения;
• ORDER BY – упорядочивает объединяемые значения;
• SEPARATOR – задает разделитель значений.
Например, запросвозвращает строку, содержащую имена клиентов без повторений, упорядоченные по алфавиту и разделенные точкой с запятой (табл. 3.37). Таблица 3.37. Результат выполнения запроса
Итак, вы изучили все основные групповые функции (за рамками нашего рассмотрения остались функции BIT_AND() – побитовое «и», BIT_OR() – побитовое «или» и BIT_XOR() – побитовое «исключающее или»). В следующем подразделе мы рассмотрим ключевое слово GROUP BY, с помощью которого можно вычислять групповые функции одновременно для нескольких групп строк.Параметр GROUP BY
В предыдущем подразделе мы рассматривали примеры запросов, в которых групповые функции вычисляют обобщающее значение для
Например, запрос
возвращает общую сумму заказов отдельно для каждого клиента (табл. 3.38). В этом запросе заказы сгруппированы по значению столбца customer_id (клиент), поэтому каждая группа состоит из заказов одного клиента, а функция SUM(amount) вычисляет сумму заказов в каждой из групп. Таблица 3.38. Результат выполнения запроса
Таким же образом можно подсчитать количество заказов каждого клиента, максимальную, минимальную и среднюю сумму заказа и др.
Другой пример – запрос, возвращающий имена клиентов с одинаковым значением рейтинга:Этот запрос группирует клиентов по значению рейтинга и выводит имена клиентов в каждой группе (табл. 3.39). Таблица 3.39. Результат выполнения запроса
Если указано ключевое слово WITH ROLLUP, то обобщенные значения выводятся как для отдельных групп строк, так и для всех в совокупности строк.
Например, запросвозвращает, помимо общей суммы заказов каждого клиента, сумму всех заказов (табл. 3.40). Таблица 3.40. Результат выполнения запроса
В этой таблице, по сравнению с табл. 3.38, появилась итоговая строка, содержащая общую сумму всех заказов.
В запросе с параметром GROUP BY вы можете использовать условия как для отбора отдельных строк перед группировкой, так и для отбора групп строк. Если требуется выбрать из таблицы строки, удовлетворяющие какому-либо критерию, а затем объединить в группы только эти строки, то применяется параметр WHERE, который должен быть указан
позволяет подсчитать, сколько заказов на сумму более 5000 сделал каждый клиент (табл. 3.41). Сначала выбираются строки таблицы Orders (Заказы), для которых выполнено условие amount>5 0 0 0, далее эти строки группируются по значению столбца customer_id (клиент), и после этого вычисляется количество строк в каждой из групп. Таблица 3.41. Результат выполнения запроса
Для отбора групп строк служит параметр HAVING, о котором будет идти речь в следующем подразделе.
Параметр HAVING
Параметр HAVING позволяет задать условие отбора для групп строк. Он аналогичен параметру WHERE, но указывается
Условие SUM(amount) > = 20 000 позволяет отобрать только те группы строк, в которых общая сумма заказа равна или превышает 20 000 (табл. 3.42). Таблица 3.42. Результат выполнения запроса
Итак, вы изучили запросы с групповыми функциями, позволяющими получать из таблиц обобщенные данные. Далее мы кратко рассмотрим некоторые полезные функции, оперирующие числовыми величинами.3.3. Числовые операторы и функции
В данном разделе вы узнаете об основных операторах и функциях, используемых для арифметических, алгебраических и тригонометрических вычислений. Наиболее часто используемыми являются арифметические операторы.
Арифметические операторы
В выражениях вы можете использовать следующие арифметические операторы:
•
Оператор сложения. Возвращает сумму операндов
•
Оператор вычитания. Возвращает разность операндов
При использовании с одним операндом меняет его знак, например – (3 + 2) = -5.
•
Оператор умножения. Возвращает произведение операндов
•
Оператор деления. Возвращает частное от деления
•
Оператор деления c остатком, или целочисленного деления. Возвращает целую часть частного от деления
• 7 DIV 2 = 3,
• (-7) DIV 2 = -3,
• 7 DIV (-2) = - 3,
• (-7) DIV (-2) = 3.
• a %
Оператор вычисления остатка. Возвращает остаток от целочисленного деления
• 7 % 2 = 1,
• (– 7) % 2 = -1,
• 7 % (-2) = 1,
• (-7) % (-2) = - 1.
В следующем подразделе мы рассмотрим алгебраические функции.
Алгебраические функции
В выражениях вы можете использовать следующие алгебраические