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
значения, работа броска заставляет базовое числовое значение
использоваться.
Возвращает среднее значение
. expr
DISTINCT
опция
может использоваться, чтобы возвратить среднее число отличных значений 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
если не было никаких строк соответствия.