Пустые значения в агрегирующих функциях

Наличие пустых (NULL) значений в полях таблицы определяет особенности выполнения агрегирующих операций над данными, которые следует учесть в SQL-запросах.

Воздействие NULL-значений в функции COUNT

Если аргумент функции COUNT является константой либо столбцом без пустых значений, то функция возвращает количество строк, к которым применимо определенное условие либо группирование.

Если аргументом функции Пустые значения в агрегирующих функциях является столбец, содержащий пустое значение, то COUNT возвратит число строк, которые не содержат пустые значения и к которым применимо определенное в COUNT условие для группировки.

Поведение функции COUNT (*) не находится в зависимости от пустых значений. Она вернет полное количество строк в таблице.

Воздействие NULL-значений в функции AVG

Среднее Пустые значения в агрегирующих функциях значение огромного количества чисел равно сумме чисел, деленной на число частей огромного количества. Но если некие элементы пусты, то деление на количество всех частей огромного количества приведет к неверному результату.

Функция AVG вычисляет среднее значение всех узнаваемых значений огромного количества частей, другими словами эта функция подсчитывает сумму узнаваемых значений и разделяет Пустые значения в агрегирующих функциях ее на количество этих значений, а не на полное количество значений, посреди которых могут быть NULL-значения. Если столбец состоит только из пустых значений, то функция AVG также вернет NULL.

Оператор ORDER BY

Оператор ORDER BY (сортировать по) применяется для упорядочивания (сортировки) записей. Если он употребляется в запросе, то Пустые значения в агрегирующих функциях в самом конце запроса. Этот оператор сортирует строчки всей таблицы либо отдельных ее групп (в случае внедрения оператора GROUP BY). Если в выражении запроса оператора GROUP BY нет, то оператор ORDER BY рассматривает все записи таблицы как одну группу.

Прямо за главным словом ORDER BY указывается столбец, по значениям Пустые значения в агрегирующих функциях которого следует произвести сортировку. После имени столбца можно указать ключевое слово, задающее порядок (режим) сортировки:

p ASC – по возрастанию (ascending). Это значение принято по дефлоту, потому если нужна сортировка, к примеру, в алфавитном порядке, то специально указывать порядок не требуется;

p DESC– по убыванию (descending).

Если в выражении ORDER BY Пустые значения в агрегирующих функциях указаны несколько столбцов сортировки, то поначалу записи упорядочиваются по значениям первого столбца, потом для каждого значения первого столбца записи упорядочиваются по значениям второго столбца и т.д. Столбцы в перечне делятся, как обычно, запятыми. Таким макаром, создается иерархическая система сортировки записей результирующей таблицы.

Пример:

SELECT *

FROM SUBJECTS

ORDER BY SUBJECT Пустые значения в агрегирующих функциях_NAME;

Избрать все данные из таблицы SUBJECRS, упорядочив их по возрастанию предмета. По дефлоту ASC

SELECT *

FROM SUBJECTS

ORDER BY SUBJECT_NAME DESC;

Упорядочить выводимый перечень предметов обучения по семестру, а снутри семестра по наименованию предмета:

SELECT *

FROM SUBJECTS

ORDER BY SEMESTER, SUBJECT_NAME;

SELECT *

FROM SUBJECTS

GROUP BY SEMESTER, SUBJECT_NAME

ORDER BY Пустые значения в агрегирующих функциях SEMESTER;

Вложенные подзапросы

SQL позволяет использовать одни запросы снутри других запросов, другими словами вкладывать запросы друг в друга.

Пример:

Представим, известна фамилия студента, но не понятно значение поля STUDENT_ID для него. Чтоб извлечь все данные обо всех оценках этого студента, можно записать последующий запрос:

SELECT *

FROM EXAM_MARKS

WHERE STUDENT Пустые значения в агрегирующих функциях_ID =

(SELECT STUDENT_ID

FROM STUDENTS

WHERE SURNAME ='Петров');

Метод работы запроса SQL со связанным подзапросом:

1 шаг: выбирается строчка из таблицы, имя которой обозначено во наружном запросе;

2 шаг: производится подзапрос и приобретенное значение применяется для анализа этой строчки в условии предложения WHERE наружного запроса;

3 шаг: по результату оценки этого условия принимается Пустые значения в агрегирующих функциях решение о включении либо не включении строчки в состав выходных данных;

4 шаг: процедура повторяется для последующей строчки таблицы наружного запроса.

В неких случаях для гарантии получения единственного значения в итоге выполнения подзапроса употребляется DISTINCT. Одним из видов функций, которые автоматом всегда выдают в итоге единственное значение для хоть какого количества Пустые значения в агрегирующих функциях строк, являются агрегирующие функции.

Пример:

Данные обо всех оценках студентов из Воронежа можно избрать при помощи последующего запроса:

SELECT *

FROM EXAM_MARKS

WHERE STUDENT_ID IN

(SELECT STUDENT_ID

FROM STUDENTS

WHERE CITY ='Воронеж');

Подзапросы можно использовать снутри предложения HAVING.

Пример:

Пусть требуется найти количество предметов обучения с оценкой, превосходящей среднее значение оценки студента Пустые значения в агрегирующих функциях с идентификатором 301:

SELECT COUNT (DISTINCT SUBJ_ID), MARK

FROM EXAM_MARKS

GROUP BY MARK

HAVING MARK >

(SELECT AVG (MARK)

FROM EXAM_MARKS

WHERE STUDENT_ID = 301);


put-v-budushee-ruh-mirovogo-altaya.html
put-vegetativnoj-innervacii-mochevogo-puzirya.html
put-zarazheniya-alimentarnij-myaso-yajca-myasnie-produkti.html