我有4列a,b,c,d
样本数据
a | b | c | d |
1 | 1 | 101 | 0
2 | 1 | 101 | 0
3 | 1 | 101 | 1
4 | 1 | 102 | 0
5 | 1 | 102 | 0
1 | 2 | 101 | 0
2 | 2 | 101 | 1
编写一个sql命令,这样它应该返回那些行,其中对于b中的每个c值,返回最大值为a的行
i、 e预期输出
a | b | c | d |
3 | 1 | 101 | 1
5 | 1 | 102 | 0
2 | 2 | 101 | 1
2条答案
按热度按时间brccelvz1#
可以使用相关子查询:
带索引的
t(b, c, a)
,这往往有最好的表现。另一种选择是窗口功能:
3duebb1j2#
你没有提到你正在使用的数据库。在postgresql中,您可以执行以下操作: