2016-06-26 3 views
0

Моя база данных содержит список продуктов и отделки. Я смог успешно усреднить цену каждого варианта финиша, но я хочу показать только самый дешевый вариант.SQL - отображать минимальное значение средней цены

Приведен пример моих данных.

Таблица 1 - product_t

ProductID ProductLineID ProductDescription ProductFinish ProductStandardPrice ProductOnHand 
1 1 "Cherry End Table" Cherry 175.00 0 
2 1 "Birch Coffee Tables" Birch 200.00 0 
3 1 "Oak Computer Desk" Oak 750.00 0 
4 1 "Entertainment Center" Cherry 1650.00 0 

Результаты Этот запрос в списке каждого доступного продукта отделки и средней ценой пункта, который имеет отделку.

SELECT ProductFinish, AVG(ProductStandardPrice) as AveragePrice 
FROM product_t 
WHERE ProductFinish IS NOT NULL 
GROUP BY ProductFinish; 

Однако, я всего лишь хочу отобразить самую низкую цену, которая возникает в результате этого запроса. Я попытался выполнить этот запрос, но он не будет выполнен.

SELECT ProductFinish, MIN (AVG(ProductStandardPrice)) as AveragePrice 
FROM product_t 
WHERE ProductFinish IS NOT NULL 
GROUP BY ProductFinish; 

Заранее благодарим за любую помощь. Это очень ценится.

+0

, пожалуйста, отметьте используемый dbms. –

ответ

3

Типичным способом получения наименьшего значения является использование order by и своего рода ограничение на количество строк. В ANSI SQL стандарта, это было бы:

SELECT ProductFinish, AVG(ProductStandardPrice) as AveragePrice 
FROM product_t 
WHERE ProductFinish IS NOT NULL 
GROUP BY ProductFinish; 
ORDER BY AveragePrice ASC 
FETCH FIRST 1 ROW ONLY; 

Обратите внимание, что некоторые базы данных с помощью LIMIT 1 или TOP 1 вместо FETCH FIRST 1 ROW ONLY. Кроме того, эта версия выбирает только одну запись с самой низкой ценой. Если есть повторяющиеся минимумы, выбирается произвольное значение.

+0

Спасибо, Гордон, он отлично работал! – Brent