2016-04-02 23 views
0

içindeki en küçük oranda BY Product s modelim var ve her ürünün 1 veya daha fazla Sku s var. Her bir sku, bir shipping_price ve bir selling_price'a sahiptir.SQL/Postgres SELECT, ORDER GROUP

Ürünleri, skuslarının en yüksek veya en düşük shipping_price/selling_price oranına göre sıralamak istiyorum, ancak sorgunun doğru yapılmasında sorun yaşıyorum.

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; 

Ama açıkça sıfır olmadığı yerlerde bu shipping için sıfır bir sürü verir: Örneğin, "asgari nakliye oranı" için şu anda var. Bazı dizi işlemler ve min kombinasyonuna ihtiyacım var gibi görünüyor, ancak HERE yöntemlerini nasıl birleştireceğinden emin değilim.

Bunu yapmak için basit bir yol var mı?

cevap

1

Türün min ile korunduğuna benzediği için, bir tam sayıyı başka bir tamsayıya bölerek her şeyi sıfıra düşürür.

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

Çözüm çift yayın yapmak için oldu