所以我有一个包含这样一组信息的表
name Type PRICE
11111 XX 0.001
22222 YY 0.002
33333 ZZ 0.0001
11111 YY 0.021
11111 ZZ 0.0111
77777 YY 0.1
77777 ZZ 1.2
现在这些数字持续了大约一百万行,并且可能有超过20个相同的“名称”映射到20个不同的TYPE。但每个名称只有1个唯一类型。我的意思是11111上可以有XX,YY,ZZ,但它不能有YY,ZZ,YY。
我需要的是获得最低的3个价格以及每个名称的类型。
现在我可以通过以下方式获得每个名字的最低价格:
select name, type, min(price) from table group by name;
然而,这只是最低价,但我需要最低的3个价格。我已经尝试了几天,我似乎无法得到它。感谢所有帮助。
另外,如果我忘记了任何信息,请告诉我,我仍然想弄清堆栈溢出:P
哦,数据库是一个使用SQL语法的noSQL。
编辑:我似乎无法从我的表中获取我的示例数据的格式以正确显示
答案 0 :(得分:0)
如果您的数据库支持窗口函数,并且允许数据中可能有三行以上三种价格中的任何一行,则应该这样做:
select the_table.*
from
the_table
inner join (
select name, price
from (
select name, price, row_number() over(partition by name order by price) as rn
from the_table) as x
where rn < 4
) as y on y.name=the_table.name and y.price=the_table.price;