Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Справочник по языку MySQL /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Функции, используемые в операторах SELECT и WHERE (часть 2) - Программирование от RIN.RU
Функции, используемые в операторах SELECT и WHERE (часть 2)



Функции, используемые в операторах GROUP BY


Вызов групповых функций для SQL-команд, не содержащих GROUP BY, эквивалентен выполнению этих функций над всем набором возвращаемых данных.


COUNT(expr)

Возвращает количество величин со значением, не равным NULL, в строках, полученных при помощи команды SELECT:


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;


COUNT(DISTINCT expr,[expr...])

Возвращает количество различающихся величин со значением, не равным NULL:


mysql> SELECT COUNT(DISTINCT results) FROM student;


В MySQL для того, чтобы получить количество различающихся комбинаций выражений, не содержащих NULL, нужно просто задать список этих выражений. В ANSI SQL необходимо провести конкатенацию всех выражений внутри CODE(DISTINCT ...).

AVG(expr)

Возвращает среднее значение аргумента expr:


mysql> SELECT student_name, AVG(test_score)
FROM student
GROUP BY student_name;


MIN(expr)


MAX(expr)

Возвращает минимальную или максимальную величину аргумента expr. Функции MIN() и MAX() могут принимать строковый аргумент; в таких случаях они возвращают минимальную или максимальную строковую величину. См. раздел Использование индексов в MySQL.


mysql> SELECT student_name, MIN(test_score), MAX(test_score)
FROM student
GROUP BY student_name;


SUM(expr)

Возвращает сумму величин в аргументе expr. Обратите внимание: если возвращаемый набор данных не содержит ни одной строки, то функция возвращает NULL!

STD(expr)


STDDEV(expr)

Возвращает среднеквадратичное отклонение значения в аргументе expr. Эта функция является расширением ANSI SQL. Форма STDDEV() обеспечиваетсовместимость с Oracle.

BIT_OR(expr)

Возвращает побитовое ИЛИ для всех битов в expr. Вычисление производится с 64-битовой (BIGINT) точностью.

BIT_AND(expr)

Возвращает побитовое И для всех битов в expr. Вычисление производится с 64-битовой (BIGINT) точностью.


В MySQL расширены возможности использования оператора GROUP BY. Теперь в выражениях SELECT можно использовать столбцы или вычисления, которые не присутствуют в части GROUP BY. Это справедливо для любой возможной величины для этой группы. Данная возможность позволяет повысить производительность за счет исключения сортировки и группирования ненужных
величин. Например, в следующем запросе нет необходимости в группировке customer.name:


mysql> SELECT order.custid,customer.name,MAX(payments)
FROM order,customer
WHERE order.custid = customer.custid
GROUP BY order.custid;


В ANSI SQL к предложению GROUP BY необходимо добавлять customer.name. В MySQL, если работа происходит не в режиме ANSI, это имя избыточно.


Не используйте данное свойство, если столбцы, пропущенные в части GROUP BY, не являются уникальными в данной группе! Возможны непредсказуемые результаты.


В некоторых случаях можно применять функции MIN() и MAX() для получения указанной величины столбца, даже если он не является уникальным. В следующем примере выдается значение столбца column из строки, содержащей наименьшую величину в столбце sort:


SUBSTR(MIN(CONCAT(RPAD(sort,6,' '),column)),7)


См. раздел Строка, содержащая максимальное значение некоторого столбца.


Следует отметить, что в версии MySQL 3.22 (или более ранней) либо при попытке работы в рамках ANSI SQL применение выражений в предложениях GROUP BY или ORDER BY невозможно. Это ограничение можно обойти, используя для выражения псевдоним:


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();


<<<  Назад
 1  2  3 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Структура языка

Типы данных столбцов

Функции, используемые в операторах SELECT и WHERE (часть 1)

Обработка данных: SELECT, INSERT, UPDATE, DELETE

Определение данных: CREATE, DROP, ALTER

Основные команды пользовательских программ MySQL

Команды управления транзакциями и блокировками в MySQL

Полнотекстовый поиск в MySQL

Кэш запросов в MySQL

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь