有张表AA 部门 A1 员工编号A2 员工姓名 A3 入职日期A4 如何查询各个部门第二个入职的员工信息
显示如下
部门名称、员工编号、员工姓名、入职日期
问sql题请提供一下数据库类型及版本。
根据问题描述来看,是要按部门分组,每个组按入职日期倒序排序,取每个组的第二行,那么这自然就想到了要使用开窗函数row_number,但并不是所有数据库都支持开窗函数的
select * from (
select aa.*,row_number() over(partition by A1 order by A4 desc) rn from aa) as b
where rn=2
简单的实现下:
SELECT A1, A2, A3, A4
FROM AA
ORDER BY A4 ASC
LIMIT 1, 1;
使用 limit 语句即可,建议刷刷 leetcode 上的 sql 练习就行了,有原题,上面的答案如果不对,把 ASC 换成 DESC 。
还可以考虑的更复杂,比如为 NULL 的时候。
望采纳。