Документация MySQL
Вызов групповых функций для SQL-команд, не содержащих
,
эквивалентен выполнению этих функций над всем набором возвращаемых данных.
Возвращает количество величин со значением, не равным
, в строках,
полученных при помощи команды
mysql> SELECT student.student_name,COUNT(*) FROM student,course
WHERE student.student_id=course.student_id
GROUP BY student_name;
несколько отличается от описанной выше: она возвращает
количество извлеченных строк, содержащих величины со значением
.
оптимизирована для очень быстрого возврата результата при
условии, что команда
извлекает данные из одной таблицы, никакие
другие столбцы не обрабатываются и функция не содержит выражения
.
Например:
COUNT(DISTINCT expr,[expr...])
Возвращает количество различающихся величин со значением, не равным
В MySQL для того, чтобы получить количество различающихся комбинаций
выражений, не содержащих
, нужно просто задать список этих выражений.
В ANSI SQL необходимо провести конкатенацию всех выражений внутри
CODE(DISTINCT ...)
.
mysql> SELECT student_name, AVG(test_score)
FROM student
GROUP BY student_name;
. Функции
могут принимать строковый аргумент; в таких случаях они
возвращают минимальную или максимальную строковую величину.
See section
.
mysql> SELECT student_name, MIN(test_score), MAX(test_score)
FROM student
GROUP BY student_name;
. Обратите внимание: если
возвращаемый набор данных не содержит ни одной строки, то функция
возвращает
!
. Эта
функция является расширением ANSI SQL. Форма
обеспечивает
совместимость с Oracle.
. Вычисление производится с
64-битовой (
) точностью.
. Вычисление производится с
64-битовой (
) точностью.
. Теперь в
выражениях
можно использовать столбцы или вычисления, которые не
присутствуют в части
. Это справедливо для любой возможной
величины для этой группы. Данная возможность позволяет повысить
производительность за счет исключения сортировки и группирования ненужных
величин. Например, в следующем запросе нет необходимости в группировке
customer.name
mysql> SELECT order.custid,customer.name,MAX(payments)
FROM order,customer
WHERE order.custid = customer.custid
GROUP BY order.custid;
customer.name
. В
MySQL, если работа происходит не в режиме ANSI, это имя избыточно.
Не используйте данное свойство, если столбцы, пропущенные в части
, не являются уникальными в данной группе! Возможны непредсказуемые
результаты.
для получения
указанной величины столбца, даже если он не является уникальным. В
следующем примере выдается значение столбца
из строки, содержащей
наименьшую величину в столбце
SUBSTR(MIN(CONCAT(RPAD(sort,6,' '),column)),7)
See section .
Следует отметить, что в версии MySQL 3.22 (или более ранней) либо при
попытке работы в рамках ANSI SQL применение выражений в предложениях
невозможно. Это ограничение можно обойти,
используя для выражения псевдоним:
mysql> SELECT id,FLOOR(value/100) AS val FROM tbl_name
GROUP BY id,val ORDER BY val;
В версии MySQL 3.23 можно также выполнить следующее:
mysql> SELECT id,FLOOR(value/100) FROM tbl_name ORDER BY RAND();
Рубрики: Без рубрики |

