У меня есть модель Product
s, и каждый продукт имеет 1 или более Sku
s. Каждый sku имеет shipping_price
и selling_price
.SQL/Postgres SELECT, ORDER Наименьшее соотношение в пределах группы
Я бы хотел сортировать товары по их самому высокому или низкому коэффициенту skus shipping_price/selling_price
, но у меня возникли проблемы с правильной обработкой запроса. Например, для «минимального коэффициента доставки» прямо сейчас у меня есть:
SELECT
p.id,
p.title,
array_agg(s.shipping_price) as shipping_prices,
array_agg(s.baseline_price) as baseline_prices,
min(s.shipping_price/s.baseline_price) as shipping
FROM "Products" p
JOIN "Skus" s
ON p.id = s.product_id
WHERE p.category_id in (1,2,3)
GROUP BY p.id
ORDER BY shipping ASC
LIMIT 48
OFFSET 0;
Но это дает много нулей для shipping
где они явно не нули. Похоже, мне нужна комбинация операций массива и мин, но я не уверен, как объединить методы HERE.
Есть ли простой способ сделать это?