可能重复:
My sql query to get middle row values using GROUP BY function
我的数据库结构就像
Id Price Code
1 0.12 93
2 0.13 93
3 0.54 93
4 0.96 93
5 0.10 94
6 0.30 94
7 0.90 94
8 1.40 94
9 2.30 94
我必须使用GROUP BY
代码获取数据,并且我希望第二个最小行作为输出。
在上面的例子中,我希望输出为
Id Price Code
2 0.13 93
6 0.30 94
在其他情况下我想要第三个最小值,输出应该是
Id Price Code
3 0.54 93
7 0.90 94
答案 0 :(得分:3)
这将为您提供第二个值
SELECT MAX(Price), Code
FROM
(
SELECT ID, Price, Code
FROM TableName
WHERE
(
SELECT COUNT(*)
FROM TableName as f
WHERE f.Code = TableName.Code and
f.Price <= TableName.Price
) <= 2 // << just change this value
) s
GROUP BY Code