Программирование >>  Исключение дубликатов строк 

1 ... 123 124 125 [ 126 ] 127 128 129 ... 152


Уточнение: Select the minttnttm (price times * quantity ordered)

as LowestltemTotal from the order details table where the order ID is = 3314

(Выбрать минимум (цена * заказанное количество) как LowestltemTotal из Детали заказа , где идентификатор заказа = 3314)

SQL SELECT MIN(Price * QuantityOrdered)

AS LowestltemTotal FROM OrderDetails WERE OrderlD = 3314

В следующем примере используется опция DISTINCT для возвращения уникального экземпляра самой ранней даты приема на работу в таблице Employee. В этом случае два или несколько сотрудников могут быть приняты на работу 16 мая 1977 г., но нам нужно видеть только один экземпляр этих данных:

When did we hire our first employees?

( Когда бьии приняты на работу самые первые сотрудники? )

Преобразование: Select the minimum unique hire date as EarliestHireDate

from the employees table

(Выбрать минимальную уникальную дату приема на работу как EarliestHireDate из таблицы Сотрудники )

Уточнение: Select the minimum unique (distinct hire date)

as EarliestHireDate from the employees table (Выбрать min (уникальную дату приема на работу) как EarliestHireDate из Сотрудники )

SQL SELECT MIN(DiaTINCT HireDate)

AS EarliestHireDate FROM Employees

Важно отметить, что опция DISTINCT не оказывает какого-либо влияния на функцию MIN, как и на функцию МАХ. Может существовать только одно минимальное значение независимо от того, повторяется оно или нет. Например, оба следующих выражения возвращают одинаковое значение:

SELECT MIN(ReviewDate) FROM Agents

SELECT MIN(DISTINCT ReviewDate) FROM Agents

Мы представили оба варианта функции, потому что они являются частью текущего стандарта SQL, но рекомендуем использовать только функцию MIN без опции DISTINCT.



Использование нескольких функций

Можно использовать несколько агрегатных функций одновременно. Это позволяет показать сравниваемую информацию, используя один оператор SELECT. На-

МАХ, чтобы показать самую давнюю

ункции МАХ, Ml

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

Show те the earliest and most recent review dates for the employees in the advertising department .

( Показать самую давнюю и самую последнюю дату проверок сотрудников рекламного отдела .)

Преобразование: Select the minimum review date as EarliestReviewDate

and the maximum review date as RecentReviewDate from

the employees table where the department is Advertising

(Выбрать минимальную дату проверки

как EarliestReviewDate и максимальную дату проверки

как RecentReviewDate из таблицы Сотрудники ,

где отдел - Рекламный )

Уточнение: Select the minimum review date as EarliestReviewDate atte

the maximum review date as RecentReviewDate from the employees table where the department = Advertising (Выбрать min дату проверки как EarliestReviewDate и max дату проверки как RecentReviewDate из Сотрудники , где отдел = Рекламный )

SQL SELECT MIN(ReviewDate) AS EarliestReviewDate,

MAX(ReviewDate) AS RecentReviewDate FROM Employees

WHERE Department = Advertising

How many different products where ordered on order number 553 and what was the total cost of that order? ( Сколько различных товаров было заказано в заказе номер 553 и какова общая стоимость этого заказа? )

Преобразование: Select the count of product ID as TotalProductsPurchased

and the sum of price times quantity ordered as OrderAmount from the order details table where the order number is 553

(Выбрать количество идентификаторов товара как TotalProductsPurchased и сумму цены, умноженной на количество, заказанное как OrderAmount, из таблицы Детали заказа , где номер закяза - 553)



Уточнение: Select the count of (product ID) as

TotalProductsPurchased and the sum of (price times * quantity ordered) as OrderAmount from the order details table where the order number is = 553 (Выбрать количество (идентификатор товара) как TotalProductsPurchased и сумму (цена * заказанное количество) как OrderAmount из Детали заказа , где номер заказа = 553)

SQL SELECT COUNT(ProductlD) AS

Total ProductsPurchased, SUM(Price * QuantityOrdered) AS OrderAmount FROM Order.Details WHERE OrderNumber = 553

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

SUM(AVG(LineltemTotal))

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

AVG((SELECT Price FROM Products WHERE Category = Bikes))

Теперь рассмотрим, как можно использовать агрегатную функцию для фильтрации информации в наборе результата.

Использование агрегатных функций в фильтрах

Поскольку агрегатная функция возвращает отдельное значение, ее можно использовать как часть предиката сравнения в условии поиска. Однако ее следует помещать в подзапрос, а затем использовать этот подзапрос как часть предиката сравнения. Мы уже изучали использование подзапроса как части условия поиска в условии WHERE, а агрегатной функции - в подзапросе. Теперь расширим эти знания.

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



1 ... 123 124 125 [ 126 ] 127 128 129 ... 152

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика