sql语句,求每个分组中的最大值

时间:2021-05-15 15:11:18
年     产品   销量
2005   a      700
2005   b      550
2005   c      600
2006   a      340
2006   b      500
2007   a      220
2007   b      350

我要得到
2005   a     700
2006   b     500
2007   b     350
怎么做?

6 个解决方案

#1


select 年,产品,销量=max(销量) 
from tb
group by 年,产品

#2


mark 学习

#3



select * from tb a where not exists(select * from tb where 年=a.年 and 销量>a.销量) 

--or:
select * from tb a inner join (select 年,max(销量) as 销量 from tb group by 年)b
on a.年=b.年 and a.销量=b.销量

#4


--晕。一楼的都不对,你还学习。。。
--倒。。。。

#5


一楼看错题意了

#6


觉得sql在分组这方面的能力好差.

比如说, 现在我们按某些字段对数据表进行分组.
然后想得到每组的第三条记录(已知,每组的记录数至少有三条)

如果想求解这种问题的话,那将是很麻烦的事情.
当然你可以通过为每组的记录加一个排序列.
但是总觉得用起来不顺手.

#1


select 年,产品,销量=max(销量) 
from tb
group by 年,产品

#2


mark 学习

#3



select * from tb a where not exists(select * from tb where 年=a.年 and 销量>a.销量) 

--or:
select * from tb a inner join (select 年,max(销量) as 销量 from tb group by 年)b
on a.年=b.年 and a.销量=b.销量

#4


--晕。一楼的都不对,你还学习。。。
--倒。。。。

#5


一楼看错题意了

#6


觉得sql在分组这方面的能力好差.

比如说, 现在我们按某些字段对数据表进行分组.
然后想得到每组的第三条记录(已知,每组的记录数至少有三条)

如果想求解这种问题的话,那将是很麻烦的事情.
当然你可以通过为每组的记录加一个排序列.
但是总觉得用起来不顺手.