Базы данных

Встроенные функции и группировка

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

SELECT Nationality, COUNT(*)

FROM ARTIST

GROUP BY  Nationality;

Результат будет таким:

Us з

French          2

Russian         1

Spanish        1

German         1

Ключевое слово GROUPBY предписывает СУБД отсортировать таблицу по указанному столбцу, а затем применить встроенные функции к группам строк, имеющим одинаковые значения данного столбца. При использовании GROUP BY имя столбца, по которому производится группировка, и встроенные функции могут сосуществовать в предложении SELECT. Это единственный случай, когда имя столбца может появляться вместе со встроенными функциями.

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

SELECT Nationality, COUNT(*) FROM ARTIST GROUP BY Nationality HAVING COUNT(*)>1;

Результатом этого оператора будет следующая таблица:

Us з

French           2

Вместе с ключевым словом GROUPBY можно использовать и предложение WHERE. Однако здесь имеет место неоднозначность. Если условие в предложении WHERE применяется до формирования групп, результат будет иным, чем когда это условие применяется к уже сформированным группам. Для устранения этой неоднозначности стандарт SQL устанавливает, что в случаях, когда предложения WHERE и GROUP BY используются одновременно, первым должно применяться условие, записанное в предложении WHERE. Рассмотрим, например, следующий оператор:

предыдущаяследующая