From c59f43c01265d0516b9138c3b41f7a2924c74308 Mon Sep 17 00:00:00 2001 From: syneffort Date: Mon, 26 Sep 2022 11:25:28 +0900 Subject: [PATCH] ranking --- first_value, lag, lead.sql | 16 ++++++++++++++++ group rank (partition by).sql | 17 +++++++++++++++++ top rank.sql | 22 ++++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 first_value, lag, lead.sql create mode 100644 group rank (partition by).sql create mode 100644 top rank.sql diff --git a/first_value, lag, lead.sql b/first_value, lag, lead.sql new file mode 100644 index 0000000..22f34b2 --- /dev/null +++ b/first_value, lag, lead.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 \ No newline at end of file diff --git a/group rank (partition by).sql b/group rank (partition by).sql new file mode 100644 index 0000000..4604158 --- /dev/null +++ b/group rank (partition by).sql @@ -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 \ No newline at end of file diff --git a/top rank.sql b/top rank.sql new file mode 100644 index 0000000..63c204b --- /dev/null +++ b/top rank.sql @@ -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