写sql时,经常会出现一对多的查询。
比如一张公司表,还有一张员工考勤信息表,怎么样取每个员工最新的那条考勤数据喃?
此时需要用到分析函数row_number() over (partiion by … order by …)来进行分组编号,然后取分组标号值为1的记录即可。(取到分组后的最新一条数据信息)
比如:
select *
from (
select *, row_number() over (partition by "员工ID" order by "时间" desc) as group_ids
from "表名"
) s where s.group_ids = 1
这样分组后的最新一条数据就查询出来了。
我是张同学,记录下工作中出现的问题。
不积跬步,无以至千里;不积小流,无以成江海。