按cityid 分组 取localid 最大值对应的Cellid | 取聚合函数max() min() 最大值或最小值的其他字段
今天遇到了一个很奇葩的需求,查询表时需要去某个列的最大值数据相匹配的其他字段,想了很多办法最后想到了非常好用的开窗函数 first_value()
问题:按cityid 分组 取localid 最大值对应的Cellid
如图所示,开窗函数已经将最大值的同列cellid取到了
但是该语句会涉及到很多重复的字段,所以我用到了去重,查询速度也是很快的
select distinct cityid,(first_value(cellid) over (partition by cityid order by loc desc)) newcellid from (
Select cityid,cellid,max(localid) loc from base_cellinfo group by cityid,cellid
) tab
希望可以帮到大家,也可加我Q群693967782一起讨论数据库dba方面知识