我认为我使用正确的方法(我的第三次尝试)找到我要找的最低价格,但我没有得到正确答案。需要一些建议!
我有一个名为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
真的需要一些帮助。编码比我想象的要难。
答案 0 :(得分:0)
每个产品只有一个最低价格,因此您必须同时使用产品和价格来搜索商店:
SELECT storeNum, productNum, unitPrice
FROM storage
JOIN (SELECT productNum,
min(unitPrice) AS unitPrice
FROM storage
GROUP BY productNum
) USING (productNum, unitPrice);