Агрегатные функции и группировка записей
Вместо и/или вместе с именами полей в секции 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!