yeonghoon.kim

  • 게시판
  • 갤러리
  • aws

학원 20200409 정리(UNION, DISTINCT, ROW_NUMBER, RANK)

김영훈 2020.04.09 17:35 조회 수 : 289

"
--UNION, UNION ALL

SELECT ENAME, JOB
FROM EMP
UNION
SELECT ENAME, JOB
FROM EMP
;

SELECT ENAME, JOB
FROM EMP
UNION ALL
SELECT ENAME, JOB
FROM EMP
;



-- 중복 제거(DISTINCT) - 해당 값을 제거하는 것이 아니라 로우를 제거하기 때문에 효율이 떨어짐

SELECT DISTINCT JOB
FROM EMP
;


-- 굳이 안써도 동일한 결과 나오도록 할 수 있음. 하지만 GROUP BY 자체는 집계함수를 쓰기 위해 만들어진 것이므로 이걸 통해서 중복제거하는 것은 좋지 않음.

SELECT JOB
FROM EMP
GROUP BY JOB
;



-- ROW_NUMBER

SELECT ENAME, HIREDATE,
       ROW_NUMBER() OVER(ORDER BY HIREDATE DESC) AS RNUM
FROM EMP
;

SELECT ENAME, HIREDATE
FROM (SELECT ENAME, HIREDATE,
           ROW_NUMBER() OVER(ORDER BY HIREDATE DESC) AS RNUM
      FROM EMP)
WHERE RNUM BETWEEN 1 AND 10
;



-- ROWNUM : 가져온 데이터의 취득 순서(오라클 전용 함수)

SELECT ENAME, HIREDATE, ROWNUM
FROM EMP
ORDER BY HIREDATE DESC
;

SELECT ENAME, HIREDATE, ROWNUM
FROM(SELECT ENAME, HIREDATE
     FROM EMP
     ORDER BY HIREDATE DESC)
;



-- 부하직원이 가장 많은 상급자를 구하시오.

SELECT E.FIRST_NAME
FROM EMPLOYEES E INNER JOIN(SELECT MANAGER_ID, COUNT(*) AS CNT,
                                    RANK() OVER(ORDER BY COUNT(*) DESC) AS RNK
                            FROM EMPLOYEES
                            GROUP BY MANAGER_ID) A
                         ON E.EMPLOYEE_ID = A.MANAGER_ID
                        AND A.RNK = 1
;




-- 업무나 부서 변동이 있었던 사원들의 급여평균을 구하시오.

SELECT AVG(SALARY) AS AVG_SALARY
FROM EMPLOYEES
WHERE EMPLOYEE_ID IN(SELECT EMPLOYEE_ID
                       FROM JOB_HISTORY)
;



-- 사원수 1, 2등인 부서들의 급여평균을 구하고 그 평균의 차이를 구하시오.

SELECT ROUND(MAX(AVG_SALARY) - MIN(AVG_SALARY), 2) AS CHA
FROM(SELECT DEPARTMENT_ID, COUNT(*) AS CNT, AVG(SALARY) AS AVG_SALARY,
             RANK() OVER(ORDER BY COUNT(*) DESC) AS RNK
     FROM EMPLOYEES
     GROUP BY DEPARTMENT_ID)
WHERE RNK IN(1, 2)
;

SELECT A1.AVG_SALARY - A2.AVG_SALARY
FROM (SELECT DEPARTMENT_ID, AVG(SALARY) AS AVG_SALARY,
              RANK() OVER(ORDER BY COUNT(*) DESC) AS RNK
      FROM EMPLOYEES
      GROUP BY DEPARTMENT_ID) A1 INNER JOIN (SELECT DEPARTMENT_ID, AVG(SALARY) AS AVG_SALARY,
                                                     RANK() OVER(ORDER BY COUNT(*) DESC) AS RNK
                                             FROM EMPLOYEES
                                             GROUP BY DEPARTMENT_ID) A2
                                         ON A1.RNK = 1
                                        AND A2.RNK = 2
;

"

  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 0

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

업로드 중... (0%)

0개 첨부 됨 ( / )
 
번호 제목 글쓴이 날짜 조회 수
공지 2025 일본 여행 계획 김영훈 2024.10.10 1108
공지 현금, 저축, 투자, 지출, 예산, 보험 내역(2024-05-30) 김영훈 2024.03.10 765
» 학원 20200409 정리(UNION, DISTINCT, ROW_NUMBER, RANK) 김영훈 2020.04.09 289
144 학원 20200413 정리(INSERT, UPDATE, DELETE, DDL, SEQUENCE) 김영훈 2020.04.13 256
143 학원 20200414 쿼리 연습 김영훈 2020.04.14 223
142 학원 20200416 정리(DB 설계) 김영훈 2020.04.16 288
141 학원 20200420 정리(HTML 기초) 김영훈 2020.04.20 350
140 학원 20200421 정리(HTML 링크, 테이블, 영역) 김영훈 2020.04.21 179
139 학원 20200422 정리(CSS 기초1) 김영훈 2020.04.22 402
138 학원 20200423 정리(CSS 기초2) 김영훈 2020.04.23 294
137 학원 20200424 정리(CSS 기초3) 김영훈 2020.04.24 202
136 학원 20200428 정리(javascript 기초1) 김영훈 2020.04.28 352
135 1부터 1000까지 출력(라인 수 = 최대 출력 개수) 김영훈 2020.05.04 143
134 학원 20200506 정리(javascript 기초2) 김영훈 2020.05.06 215
133 학원 20200511 정리(javascript 기초3) 김영훈 2020.05.11 402
132 학원 20200512 정리(jQuery 기초1) 김영훈 2020.05.12 270
131 학원 20200513 정리(jQuery 기초2) 김영훈 2020.05.13 279
130 학원 20200525 정리(JSP, 스프링 기초, MVC패턴) 김영훈 2020.05.25 266
129 학원 20200526 정리(스프링 RequestParam, DI, Maven) 김영훈 2020.05.26 296
128 학원 20200527 정리(스프링 DAO) 김영훈 2020.05.27 251
127 학원 20200528 정리(페이징) 김영훈 2020.05.28 249
126 학원 20200601 정리(페이징 로직) 김영훈 2020.06.01 258
쓰기 태그
 첫 페이지 2 3 4 5 6 7 8 9 10 11 끝 페이지