#sql #postgresql
#sql #postgresql
Вопрос:
Укажите таблицу «магазин»
[product] [type] [price]
pen A 10
glasses B 20
lipstick A 30
Есть ли способ найти список продуктов (будь то A или B), цена которых меньше или равна средней цене или типу A?
[product] [price]
pen 10
glasses 20
Я попробовал следующее:
SELECT product, price
FROM shop
WHERE price <= avg(price) AND type = 'A'
Ответ №1:
Используйте подзапрос, чтобы найти среднюю цену товаров типа A:
SELECT product, price
FROM shop
WHERE price <= (SELECT AVG(price) FROM shop WHERE type = 'A');
Просто для развлечения, мы могли бы также использовать аналитические функции здесь:
WITH cte AS (
SELECT *, AVG(price) FILTER (WHERE type = 'A') OVER () avg_price_a
FROM shop
)
SELECT product, price
FROM cte
WHERE price <= avg_price_a;