@denism300

Возможно ли составить такой SQL запрос?

Есть некая таблица, из которой я хочу получить минимальное значение из одного столбца, максимальное из другого, а так же все значения, удовлетворяющие условию из третьего.
Сделал такой запрос:
SELECT min(`min_price`) as `min_price`, MAX(`max_price`) as `max_price`, `item_id` as `id`
	FROM `product_table` WHERE `id` IN (SELECT  тут запрос)

но выводится только min, max и один id
Реально ли получить все ID в одном запросе или, в случае, с min max так сделать не получиться?
  • Вопрос задан
  • 657 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Ничто не мешает использовать оконный вариант агрегатных функций. Кроме слишком старой версии СУБД, не поддерживающей оконные функции, конечно.
SELECT MIN(`min_price`) OVER () as `min_price`, 
       MAX(`max_price`) OVER () as `max_price`, 
       `item_id` as `id`
FROM `product_table` 
WHERE `id` IN (SELECT  тут запрос)

Получишь все нужные id, и в каждой строке - нужные MIN и MAX.

======================


Akina, да, версия 5.7.21 и она, я так понимаю, не поддерживает оконные функции.


SELECT t2.min_price, 
       t2.max_price, 
       t1.item_id as id
FROM product_table t1
CROSS JOIN ( SELECT MIN(min_price) AS min_price, 
             MAX(max_price) AS max_price
             FROM product_table ) t2
WHERE t1.id IN (SELECT  тут запрос)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
уберите min/max - получите все id, удовлетворяющие where .. in.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы