繁体   English   中英

如何从最少值的几行中选择一行

[英]how to select one row from several rows with minimum value

基于SQL查询的问题选择具有最小值的不同行 考虑一下表:

id  game   point
1    x      1
1    y      10
1    z      1
2    x      2
2    y      5
2    z      8

使用上述问题的建议答案(选择点列中具有最小值的ID,按游戏分组)我们获得

id  game   point    
1    x      1
1    z      1
2    x      2  

问题是如何获得每个ID的单个输出的答案。 两个输出

id  game   point    
1    x      1
2    x      2 

id  game   point    
1    z      1
2    x      2 

是可以接受的

使用row_number()

select t.*
from (select t.*,
             row_number() over (partition by id order by point asc) as seqnum
      from t
     ) t
where seqnum = 1;

我们假设所有点条目都是不同的(对于每个id和它的游戏,所以我们可以用它的游戏获得每个id的最小值),使用子查询和具有两个条件的内连接将给你重新等待的结果。如果它不能与你合作我得到另一个解决方案:

SELECT yt.*,     
FROM Yourtable yt INNER JOIN
    (
        SELECT ID, MIN(point) MinPoint
        FROM Yourtable
        GROUP BY ID
    ) t ON yt.ID = t.ID AND yt.Record_Date = yt.MinDate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM