728x90
반응형
안녕하세요.
이번 포스팅에서는
mariadb 윈도우 함수 중 LAG 함수와 LEAD함수에 대해
파헤쳐 볼까 합니다.
윈도우 함수에 대해 모르신다면
아래 클릭하셔서 개념을 보고 오세요.
LAG 함수 사용법
LAG 윈도우 함수는 데이터 집합내의
Record 이전의 Record의 컬럼값을 추출하는 함수입니다.
LAG의 사용 문법은 아래와 같습니다.
LAG (expr[, offset]) OVER (
[ PARTITION BY partition_expression ]
[ ORDER BY order_list ]
)
LEAD 함수 사용법
LEAD 윈도우 함수는 데이터 집합내의
Record 이후의 Record의 컬럼값을 추출하는 함수입니다.
LEAD의 사용 문법은 아래와 같습니다.
LEAD (expr[, offset]) OVER (
[ PARTITION BY partition_expression ]
[ ORDER BY order_list ]
)
LAG, LEAD 실제 사용 예시
LAG와 LEAD를 실제 사용해보기 전에
데이터를 아래와 같이 만들어 보겠습니다.
create table sales_performance(
empname varchar(100) default '' not null comment '사원이름',
sales int(20) default 0 not null comment '판매실적, 단위 천원'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO sales_performance (empname, sales) VALUES ('이남용', 115242);
INSERT INTO sales_performance (empname, sales) VALUES ('조현우', 104234);
INSERT INTO sales_performance (empname, sales) VALUES ('그녀석', 148531);
INSERT INTO sales_performance (empname, sales) VALUES ('홍길동', 95414);
INSERT INTO sales_performance (empname, sales) VALUES ('이진용', 104785);
INSERT INTO sales_performance (empname, sales) VALUES ('이순진', 115698);
INSERT INTO sales_performance (empname, sales) VALUES ('이용수', 85414);
INSERT INTO sales_performance (empname, sales) VALUES ('김진수', 121457);
INSERT INTO sales_performance (empname, sales) VALUES ('김타짜', 128541);
INSERT INTO sales_performance (empname, sales) VALUES ('최수진', 114569);
INSERT INTO sales_performance (empname, sales) VALUES ('김상호', 91423);
INSERT INTO sales_performance (empname, sales) VALUES ('김기섭', 154123);
INSERT INTO sales_performance (empname, sales) VALUES ('윤갑후', 100045);
INSERT INTO sales_performance (empname, sales) VALUES ('윤현정', 112345);
INSERT INTO sales_performance (empname, sales) VALUES ('이사라', 135657);
INSERT INTO sales_performance (empname, sales) VALUES ('하준수', 114578);
Q1. 해당 직원보다 높은 판매액을 달성한 바로 위의 직원 구하기
자신보다 바로 위의 직원명을 구해야되니
lag함수에 컬럼 empname을 넣고
over 안에 정렬 규칙을 판매액 컬럼인 sales를 내림차순으로 해서 구할 수 있다.
select
empname as "직원명",
sales as "판매액",
lag(empname) over(order by sales desc)
as "해당 직원 보다 높은 판매액을 달성한 바로 위의 직원"
from sales_performance;
Q2. 해당 직원보다 낮은 판매액을 달성한 바로 아래의 직원 구하기
자신보다 바로 아래의 직원명을 구해야되니
lead함수에 컬럼 empname을 넣고
over 안에 정렬 규칙을 판매액 컬럼인 sales를 내림차순으로 해서 구할 수 있다.
select
empname as "직원명",
sales as "판매액",
lead(empname) over(order by sales desc)
as "해당 직원 보다 낮은 매출액을 달성한 바로 아래 직원"
from sales_performance;
SQL문을 익힐때는
직접 데이터를 만들고 직접 SQL문을 짜보셔야
실력이 금방금방 늘 수 있습니다.
눈으로만 보시지 마시고
꼭 실습을 해보시길 권장드려요 ^^
이상입니다.
감사합니다.
728x90
반응형
'데이터베이스 > Maria' 카테고리의 다른 글
mariadb 윈도우함수 dense_rank 활용하기 (0) | 2023.08.22 |
---|---|
mariadb 윈도우함수 row_number 활용하기 (0) | 2023.08.20 |
macos 마리아 db 설치하기 (0) | 2023.01.02 |