一、LAG函数介绍
LAG函数是一个常用的窗口函数,作用是取当前行之后的数据,即把该列数据向上错位。使用方法如下:
LAG(col ,n ,Default)
-
col是字段名称,指明要操作的列,必须指定该参数;
-
n表示取当前行的后n行的col列数据,可以不指定默认为1;
-
Default 表示前n行没有数据时的默认值,可以不指定默认为NULL.
二、案例表及测试数据准备
首先创建该案例的表结构、插入测试数据。
-- project表为项目表
CREATE TABLE project(
proj_number varchar(20) -- 项目编号
,name varchar(20) -- 项目名称
,start_date date -- 项目启动日期
,total_cost varchar(12) -- 项目总成本:项目未完成则置NULL
,dept_code varchar(20) -- 项目负责部门编号
,client_id varchar(20) -- 客户编号
,code varchar(20) -- 项目编码
);
-- assignment表存储员工在项目的工作情况
CREATE TABLE assignment(
assign_num varchar(20) -- 作业编号
,proj_number varchar(20) -- 项目编号
,emp_num varchar(20) -- 员工编号
,date_assigned date -- 本月开始作业日期
,date_ended date -- 本月结束作业日期
,hours_used varchar(10) -- 当月工时【当月作业没有结束则存NULL】
);
-- 插入测试数据
INSERT INTO project
VALUES (7001, 'Apollo', '2020-12-17', '$10,000.90', 1, 2001, 9001)
,(7002, 'Astro', '2021-