从数据库查询中获取最佳优惠

时间:2014-06-25 02:08:16

标签: sql postgresql

我正在运行此查询:

SELECT p.id, p.descricao, p_s.preco as antigo, pr.preco as novo
FROM produtos_supermercados p_s
JOIN produtos p
ON(p_s.id_produto = p.id)
JOIN promocoes pr
ON(pr.id_produto = p.id)

我得到了这个结果:

id  descricao                   antigo          novo
16 Cookies Diet Jasmine         R$3,40        R$1,50
17 Creme de Leite Nestle 300g   R$1,99        R$1,00
48 Johnson Baby Shampoo 200ml   R$4,00        R$2,00
49 Televisão LCD LG             R$999,90      R$2,00

我想获得两个最佳优惠,其中antigo是正常价格而novo是不合理的价格。 所以,在这种情况下,我想首先运行一个返回Televisão LCD LG的查询,因为这是最好的报价(原价是999美元,现在只花2美元),我也想要第二个

但我需要小心,因为最好的报价不是原价和报价之间差异较大的报价。 例如,如果产品A的价格是1000美元,而现在的价格是900美元,而产品B的价格是5美元,现在的价格是1美元,我就有这个:

A-> $1000 - $900 = $100
B-> $5 - $1 = $4

因此,产品A的价格差异较大,但产品B的报价最高! 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您需要决定如何做到这一点,但合理的方法是使用折扣金额。 1000美元 - > 900美元,即10%; 5美元 - > 1美元是80%。

SELECT p.id, p.descricao, p_s.preco as antigo, pr.preco as novo
FROM produtos_supermercados p_s JOIN
     produtos p
     ON(p_s.id_produto = p.id) JOIN
     promocoes pr
     ON(pr.id_produto = p.id)
ORDER BY pr.preco / p_s.preco desc;