|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Таблица 12.21. Агрегат (GROUP BY) Функции
| Имя | Описание |
|---|---|
AVG() |
Возвратите среднее значение параметра |
BIT_AND()
|
Возвратитесь поразрядный и |
BIT_OR() |
Возвратитесь поразрядный или |
BIT_XOR()
|
Возвратите поразрядный xor |
COUNT(DISTINCT)
|
Возвратите количество многих различных значений |
COUNT() |
Возвратите количество числа возвращенных строк |
GROUP_CONCAT()
|
Возвратите связанную строку |
MAX() |
Возвратите максимальное значение |
MIN() |
Возвратите минимальное значение |
STD() |
Возвратите стандартное отклонение совокупности |
STDDEV_POP()
|
Возвратите стандартное отклонение совокупности |
STDDEV_SAMP()
|
Возвратите демонстрационное стандартное отклонение |
STDDEV() |
Возвратите стандартное отклонение совокупности |
SUM() |
Возвратите сумму |
VAR_POP()
|
Возвратите различие стандарта совокупности |
VAR_SAMP()
|
Возвратите демонстрационное различие |
VARIANCE()
|
Возвратите различие стандарта совокупности |
Этот раздел описывает группу (совокупные) функции, которые работают на наборах значений. Если иначе не
утверждено, групповые функции игнорируют NULL значения.
Если Вы используете групповую функцию в операторе, содержащем нет GROUP BY пункт,
это эквивалентно группировке на всех строках. Для получения дополнительной информации см. Раздел
12.17.3, "MySQL Extensions к GROUP BY".
Для числовых параметров различие и функции стандартного отклонения возвращают a DOUBLE значение. SUM() и AVG()
функции возвращают a DECIMAL значение для параметров точного значения (целое число или DECIMAL),
и a DOUBLE значение для параметров приближенного значения (FLOAT или DOUBLE).
SUM() и AVG() агрегатные функции не работают с временными значениями. (Они
преобразовывают значения в числа, теряя все после первого нечислового символа.), Чтобы работать вокруг этой
проблемы, преобразуйте в числовые модули, выполните совокупную работу, и преобразуйте назад во временное
значение. Примеры:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROMtbl_name;SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROMtbl_name;
Функции такой как SUM() или
AVG() это ожидает числовой
бросок параметра параметр числу в случае необходимости. Для SET или ENUM значения, работа броска заставляет базовое числовое значение
использоваться.
Возвращает среднее значение . exprDISTINCT опция
может использоваться, чтобы возвратить среднее число отличных значений expr.
AVG() возвраты
NULL если не было никаких строк соответствия.
mysql>SELECT student_name, AVG(test_score)->FROM student->GROUP BY student_name;
Возвращает поразрядное AND из всех битов в expr. Вычисление выполняется с 64-разрядным (BIGINT) точность.
Эта функция возвраты 18446744073709551615 если не было никаких строк
соответствия. (Это - значение без знака BIGINT значение со всем набором битов к 1.)
Возвращает поразрядное OR из всех битов в expr. Вычисление выполняется с 64-разрядным (BIGINT) точность.
Эта функция возвраты 0 если не было никаких строк соответствия.
Возвращает поразрядное XOR из всех битов в expr.
Вычисление выполняется с 64-разрядным (BIGINT) точность.
Эта функция возвраты 0 если не было никаких строк соответствия.
Возвращает количество числа не -NULL значения expr в строках, полученных a SELECT оператор. Результатом является a BIGINT значение.
COUNT()
возвраты 0 если не было никаких строк соответствия.
mysql>SELECT student.student_name,COUNT(*)->FROM student,course->WHERE student.student_id=course.student_id->GROUP BY student_name;
COUNT(*)
несколько отличается в этом, это возвращает количество числа полученных строк, содержат ли они NULL значения.
COUNT(*)
оптимизируется, чтобы возвратиться очень быстро если SELECT получает от одной таблицы, никакие другие столбцы не
получаются, и есть нет WHERE пункт. Например:
mysql> SELECT COUNT(*) FROM
student;
Эта оптимизация применяется только к MyISAM таблицы только, потому что
точное количество строки сохранено для этого механизма хранения и может быть получено доступ очень
быстро. Для транзакционных механизмов хранения такой как InnoDB,
хранение точного количества строки более проблематично, потому что многократные транзакции могут
происходить, каждый из которых может влиять на количество.
COUNT(DISTINCT expr,[expr...])
Возвращает количество числа строк с различным не -NULL expr значения.
COUNT(DISTINCT)
возвраты 0 если не было никаких строк соответствия.
mysql> SELECT COUNT(DISTINCT results)
FROM student;
В MySQL можно получить число отличных комбинаций выражения, которые не содержат NULL давая список выражений. В стандартном SQL необходимо бы сделать
связь всех выражений внутри COUNT(DISTINCT ...).
Эта функция возвращает строковый результат со связанным не -NULL
значения от группы. Это возвращается NULL если есть не не -NULL значения. Полный синтаксис следующие:
GROUP_CONCAT([DISTINCT]expr[,expr...] [ORDER BY {unsigned_integer|col_name|expr} [ASC | DESC] [,col_name...]] [SEPARATORstr_val])
mysql>SELECT student_name,->GROUP_CONCAT(test_score)->FROM student->GROUP BY student_name;
Или:
mysql>SELECT student_name,->GROUP_CONCAT(DISTINCT test_score->ORDER BY test_score DESC SEPARATOR ' ')->FROM student->GROUP BY student_name;
В MySQL можно получить связанные значения комбинаций выражения. Чтобы устранить двойные значения,
используйте DISTINCT пункт. К значениям вида в результате используйте
ORDER BY пункт. К виду в обратном порядке, добавьте DESC (убывающее) ключевое слово к имени столбца Вы сортируете в ORDER BY пункт. Значение по умолчанию является порядком по
возрастанию; это может быть определено, явно используя ASC ключевое
слово. Разделитель значения по умолчанию между значениями в группе является запятой (",").
Чтобы определить разделитель явно, использовать SEPARATOR
сопровождаемый значением строкового литерала, которое должно быть вставлено между групповыми
значениями. Чтобы устранить разделитель в целом, определить SEPARATOR
''.
Результат является усеченным к максимальной длине, которая дается group_concat_max_len системная переменная, у которой есть значение по
умолчанию 1024. Значение может быть установлено выше, хотя эффективная максимальная длина
возвращаемого значения ограничивается значением max_allowed_packet. Синтаксис, чтобы изменить значение group_concat_max_len во времени выполнения следующим образом, где
val целое без знака:
SET [GLOBAL | SESSION] group_concat_max_len = val;
Возвращаемое значение является недвоичной или двоичной строкой, в зависимости от того, являются ли
параметрами недвоичные или двоичные строки. Тип результата TEXT или BLOB если group_concat_max_len меньше чем или равно 512, когда тип
результата VARCHAR
или VARBINARY.
См. также CONCAT() и CONCAT_WS(): Раздел 12.5, "Строковые
функции".
Возвращает максимальное значение expr. MAX() может взять строковый параметр; в таких случаях это возвращает
максимальное строковое значение. См. Раздел 8.3.1, "Использование
MySQL How Индексирует". DISTINCT ключевое слово может
использоваться, чтобы найти максимум отличных значений expr, однако, это приводит к тому же самому результату
как исключение DISTINCT.
MAX() возвраты
NULL если не было никаких строк соответствия.
mysql>SELECT student_name, MIN(test_score), MAX(test_score)->FROM student->GROUP BY student_name;
Для MAX(), MySQL
в настоящий момент сравнивается ENUM и SET столбцы их строковым значением, а не относительной позицией
строки в наборе. Это отличается от как ORDER BY сравнивает их. Это, как
ожидают, будет исправлено в будущем выпуске MySQL.
Возвращает минимальное значение expr. MIN() может взять строковый параметр; в таких случаях это возвращает
минимальное строковое значение. См. Раздел 8.3.1, "Использование
MySQL How Индексирует". DISTINCT ключевое слово может
использоваться, чтобы найти минимум отличных значений expr,
однако, это приводит к тому же самому результату как исключение DISTINCT.
MIN() возвраты
NULL если не было никаких строк соответствия.
mysql>SELECT student_name, MIN(test_score), MAX(test_score)->FROM student->GROUP BY student_name;
Для MIN(), MySQL
в настоящий момент сравнивается ENUM и SET столбцы их строковым значением, а не относительной позицией
строки в наборе. Это отличается от как ORDER BY сравнивает их. Это, как
ожидают, будет исправлено в будущем выпуске MySQL.
Возвращает стандартное отклонение совокупности expr. Это -
расширение стандартного SQL. Стандартная функция SQL STDDEV_POP() может использоваться вместо этого.
Эта функция возвраты NULL если не было никаких строк соответствия.
Возвращает стандартное отклонение совокупности expr. Эта
функция обеспечивается для совместимости с Oracle. Стандартная функция SQL STDDEV_POP() может использоваться вместо этого.
Эта функция возвраты NULL если не было никаких строк соответствия.
Возвращает стандартное отклонение совокупности expr
(квадратный корень VAR_POP()).
Можно также использовать STD()
или STDDEV(),
которые эквивалентны, но не стандартный SQL.
STDDEV_POP() возвраты NULL если не было
никаких строк соответствия.
Возвращает демонстрационное стандартное отклонение expr
(квадратный корень VAR_SAMP().
STDDEV_SAMP()
возвраты NULL если не было никаких строк соответствия.
Возвращает сумму expr. Если у набора возврата нет никаких
строк, SUM()
возвраты NULL. DISTINCT ключевое слово
может использоваться, чтобы суммировать только отличные значения expr.
SUM() возвраты
NULL если не было никаких строк соответствия.
Возвращает различие стандарта совокупности expr. Это
рассматривает строки как целую совокупность, не как выборку, таким образом, у этого есть число строк
как знаменатель. Можно также использовать VARIANCE(), который эквивалентен, но не является стандартным SQL.
VAR_POP()
возвраты NULL если не было никаких строк соответствия.
Возвращает демонстрационное различие expr. Таким образом,
знаменатель является числом строк минус один.
VAR_SAMP()
возвраты NULL если не было никаких строк соответствия.
Возвращает различие стандарта совокупности expr. Это -
расширение стандартного SQL. Стандартная функция SQL VAR_POP() может использоваться вместо этого.
VARIANCE()
возвраты NULL если не было никаких строк соответствия.