2016-04-02 7 views
0

私はProductモデルを持っていて、各製品は1つ以上Skuです。各スキューはshipping_priceselling_priceです。SQL/Postgres SELECT、ORDER BY GROUP内の最小の比率

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

これを行う簡単な方法はありますか?

答えて

1

タイプがminで保存されているように見えます。したがって、整数を別の整数で除算すると、すべてが0に丸められます。

min(s.shipping_price*1.0/s.baseline_price) as shipping 

ソリューションは、二重にキャストしました