WHERE PublYear IS NULL;

 

4. Раздел GROUP BY. Предназначен для группировки записей и вычисления для них агрегатных (статистических) функций. Группировка происходит по одному или нескольким полям, объединяются записи с одинаковым значением полей. Кроме полей для группировки выделяются поля, для которых будет вычислена агрегатная функция.

Агрегатные функции выполняют вычисление на наборе значений и возвращают одиночное значение. Все они, за исключением COUNT, не учитывают значение NULL. В T-SQL используются следующие основные функции:

 

AVG – среднее арифметическое группы значений;

SUM – сумма значений;

MIN – минимальное значение;

MAX – максимальное значение;

COUNT – количество элементов в выборке.

 

Агрегатные функции могут использоваться без раздела GROUP BY. Например, можно посчитать, сколько в БД фильмов:

 

SELECT COUNT(FilmCompany)

FROM Films;

 


 

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

 

SELECT PublYear, COUNT(FilmID) as Fcount

FROM Films

GROUP BY PublYear;

 

Подсчитать среднюю продолжительность фильмов компании New Line Cinema:

 

SELECT FilmCompany, AVG(Duration) AS Favg

FROM Films

WHERE FilmCompany = 'New Line Cinema'

GROUP BY FilmCompany;

5. Раздел HAVING. Аналогичен разделу WHERE, но используется только в сочетании с GROUP BY (в WHERE нельзя использовать агрегатные функции). Предназначен для фильтрации записей.

 

Выбрать кинокомпании, которые сняли больше двух фильмов.

 

Такая запись невозможна:

 

SELECT FilmCompany

FROM Films

WHERE COUNT(FilmID) > 2

GROUP BY FilmCompany;

 

Возможная запись:

 

SELECT FilmCompany

FROM Films

GROUP BY FilmCompany

HAVING COUNT(FilmID) > 2;

 

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

Выбрать все кинокомпании, которые сняли больше двух фильмов после 2000 года.

 

Такая запись невозможна:

 

SELECT FilmCompany

FROM Films

GROUP BY FilmCompany

HAVING COUNT(FilmID) > 2 AND PublYear > 2000;

 


Возможная запись:

 

SELECT FilmCompany

FROM Films

WHERE PublYear > 2000








Дата добавления: 2018-09-24; просмотров: 257;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.