master
syneffort 3 years ago
parent 29181c6f0a
commit c59f43c012
  1. 16
      first_value, lag, lead.sql
  2. 17
      group rank (partition by).sql
  3. 22
      top rank.sql

@ -0,0 +1,16 @@
USE Study
GO
-- 행순서 함수
-- FISRT_VALUE: 첫번째 튜플만
SELECT DISTINCT DNO, FIRST_VALUE(SALARY) OVER (PARTITION BY DNO ORDER BY SALARY DESC) AS HIGH_SALARY
FROM EMPLOYEE
-- LAG/LEAD: 정렬 기준 선행/후행 값 출력
SELECT
DISTINCT ENAME,
SALARY,
LAG(SALARY, 1) OVER(ORDER BY SALARY DESC) AS LAG_SALARY,
LEAD(SALARY, 1) OVER(ORDER BY SALARY DESC) AS LEAD_SALARY
FROM EMPLOYEE

@ -0,0 +1,17 @@
USE Study
GO
-- 그룹별 순위 지정
SELECT ENAME, SALARY, DNO, RANK() OVER (PARTITION BY DNO ORDER BY SALARY DESC) AS RANK_DEPT
FROM EMPLOYEE
-- 각 그룹 급여기준 2위인 사원의 부서정보, 이름, 급여, 순위 조회
SELECT *
FROM
(SELECT DNO, ENAME, SALARY, RANK() OVER (PARTITION BY DNO ORDER BY SALARY DESC) AS RANK_VALUE
FROM EMPLOYEE) AS TEMP
WHERE RANK_VALUE = 2
-- 그룹별 집단 함수 사용
SELECT DISTINCT DNO, AVG(SALARY) OVER (PARTITION BY DNO) FROM EMPLOYEE
SELECT DISTINCT DNO, AVG(SALARY) FROM EMPLOYEE GROUP BY DNO

@ -0,0 +1,22 @@
USE Study
GO
-- TOP
SELECT TOP(5) * FROM EMPLOYEE ORDER BY SALARY DESC
SELECT TOP(5) WITH TIES * FROM EMPLOYEE ORDER BY SALARY DESC
SELECT TOP(20) PERCENT * FROM EMPLOYEE ORDER BY SALARY DESC
SELECT TOP(5) * FROM EMPLOYEE ORDER BY SALARY DESC
-- RANK
SELECT ENAME, SALARY, RANK() OVER (ORDER BY SALARY DESC) AS SALRANK FROM EMPLOYEE
SELECT ENAME, SALARY, DENSE_RANK() OVER (ORDER BY SALARY DESC) AS SALDENSERANK FROM EMPLOYEE
SELECT ENAME, SALARY, ROW_NUMBER() OVER (ORDER BY SALARY DESC) AS SALROWRANK FROM EMPLOYEE
SELECT ENAME, SALARY, NTILE(5) OVER (ORDER BY SALARY DESC) AS RANKNTILE FROM EMPLOYEE
Loading…
Cancel
Save