min()在sqlite3中不起作用

时间:2017-10-09 21:09:24

标签: sqlite min aggregation

我认为我使用正确的方法(我的第三次尝试)找到我要找的最低价格,但我没有得到正确答案。需要一些建议!

我有一个名为storage的表,看起来像这样:

    storeNum    productNum    unitPrice 
       1            p1            3.3
       1            p2            4.9
       2            p1            3.6
       3            p1            4.9
       4            p2            4.9        

我正在努力寻找每种产品和拥有该产品的商店的最低价格。 这是我的第一次和第二次尝试:

select storeNum, productNum, unitPrice 
from storage, (select min(unitPrice) as minim from storage group by 
productNum) as mint
where carries.uprice=mint.minim

select storeNum, productNum, min(unitPrice)
from storage
group by storeNum, productNum

结果是一样的:

    storeNum    productNum    unitPrice 
       1            p1            3.3
       1            p2            4.9
       3            p1            4.9
       4            p2            4.9  

p1应该只有一个最低价格,但事实并非如此。所以我谷歌并阅读this并进行了第三次尝试:

select storeNum, productNum, unitPrice 
from storage
where unitPrice=(select min(unitPrice) from storage group by productNum)

结果是一团糟:(我不知道我的代码有什么问题。

我想要的结果是:

    storeNum    productNum    unitPrice 
       1            p1            3.3
       1            p2            4.9
       4            p2            4.9  

真的需要一些帮助。编码比我想象的要难。

1 个答案:

答案 0 :(得分:0)

每个产品只有一个最低价格,因此您必须同时使用产品和价格来搜索商店:

SELECT storeNum, productNum, unitPrice
FROM storage
JOIN (SELECT productNum,
             min(unitPrice) AS unitPrice
      FROM storage
      GROUP BY productNum
     ) USING (productNum, unitPrice);