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



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

· AVG – возвращает среднее значение аргумента;

· COUNT – подсчитывает количество вхождений аргумента во все записи НД;

· МАХ – возвращает максимальное значение аргумента;

· MIN – возвращает минимальное значение аргумента;

· SUM – суммирует значения аргумента.

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

SELECT AVG(NSum-NPayedSum-NRetSum)

FROM Nakls

WHERE NType in (1, 7)

Список всех поставщиков с указанием суммы стоимости всех поставленных ими книг дает такой запрос:

SELECT FName, SUM(NSum)

FROM Nakls, Firms

WHERE FirmID=NFirm AND NType in (0, 6)

GROUP BY FName

Интересно получить не только суммы поставок, но и имена партнеров. Поэтому в приведенном выше запросе в секции SELECT указана агрегатная функция и поле таблицы Firms. Для подобного рода запросов, в которых вместе с агрегатными функциями фигури­руют и поля таблиц, SQL требует секции группировки GROUP BY, в которой в обязатель­ном порядке перечисляются все поля, указанные в секции SELECT.

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

Например, представленный ниже запрос вернет количество всех накладных, свя­занных с поставкой книг:

SELECT COUNT(NFirm) FROM Nakls

WHERE NType IN (0, 6)

Следующий запрос вернет количество поставщиков:

SELECT COUNT(DISTINCT NFirm) FROM Nakls

WHERE NType IN (0, 6)


Дата добавления: 2015-12-17; просмотров: 12; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!