SQL / Postgres SELECT,ORDER BY GROUP中的最小比率

时间:2016-04-02 00:41:00

标签: sql postgresql

我有一个Product模型,每个产品都有一个或多个Sku s。每个sku都有shipping_priceselling_price

我想通过他们的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提供了很多零,它们显然不是零。看起来我需要一些数组运算和min的组合,但我不确定如何组合方法HERE

有直接的方法吗?

1 个答案:

答案 0 :(得分:1)

看起来类型由min保留,因此将整数除以另一个整数会将所有内容舍入为零。

解决方案是投两个:

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