와 벌써 27강 매일 해낸나 대단해
--rank() over(partition by 그룹필드명 order by 정렬필드명)
--dense_rank() over (partition by 그룹필드명 order by 정렬필드명)
SELECT last_name||' '||first_name as 직원이름
, salary 급여
, rank() over (order by salary desc) as 순위1 --샐러리 기준으로 급여가 가장높은사람이 1순위로 나오도록/ 중복이있는경우 해당하는 순위가 같이 올라가게 됨.
, dense_rank() over (order by salary desc) as 순위2 --중복있어도 연속된 숫자로 순위 매기고 싶을때
FROM employees ;
/*WHERE rank() over (order by salary desc) = 2 2순위만 출력하려고 해서 이렇게 where에 윈도우함수를 사용하면 에러남.
이렇기때문에 이걸 하위쿼리로 사용하고 추가적으로 상위쿼리를 작성해서 결과를 추출해야 한다. */
--급여를 가장 많이 받는사람 기준으로 순위 매겨보기 rank함수 사용
select *
from (
SELECT last_name||' '||first_name as 직원이름
, salary 급여
, rank() over (order by salary desc) as 순위1 --
, dense_rank() over (order by salary desc) as 순위2
FROM employees
) A
WHERE 순위1 = 2
;
--4개의 컬럼을 하나의 테이블로 생각해주고, 어떤 작업을 하겠다는 시작점을 바깡트로 나와서 파생으로 만든 내 데이터의 원본을 쓴다고 생각하면 편함.
--하위쿼리에 메인로직이 들어있고, 상위쿼리에서 전체를 호출해주는 개념으로 생각
--파생컬럼을 만들어서 조인도 할수있고 다양한 방법으로 from절 서브쿼리를 확장해서 활용할수있다.
--사원테이블에서 부서번호기준으로 대상자의 급여순위 구하기
select last_name||' '||first_name as 직원이름
,salary 급여
,department_id as 부서번호
,dense_rank() over(partition by department_id order by salary desc) as 순위2
from employees;
--이 매긴 순위를 바타응로 사원테이블의 부서별 1순위대상자를 우수사원이라는 컬럼으로 표기할거다. (조인을 해야하고, 서브쿼리를 사용해야 한다)
select A.부서번호, A.직원이름, A.순위
FROM (
select last_name||' '||first_name as 직원이름
,salary 급여
,department_id as 부서번호
,dense_rank() over(partition by department_id order by salary desc) as 순위
from employees
) A
WHERE A.순위 = 1;
--이 부서번호 결과를 가지고 사원테이블의 대상과 결과를 조인해줄거임. !
--EMPLOYEES의 부서ID를 기준으로 부서별 최고 우수사원의 이름을 보여줄거임. JOIN필요
SELECT B.직원이름 AS 우수사원명 , A.*
FROM EMPLOYEES A
LEFT OUTER JOIN (
select A.부서번호, A.직원이름, A.순위
FROM (
select last_name||' '||first_name as 직원이름
,salary 급여
,department_id as 부서번호
,dense_rank() over(partition by department_id order by salary desc) as 순위
from employees
) A
WHERE A.순위 = 1
) B
ON A.DEPARTMENT_ID = B.부서번호
;
'📝수업후기 잊지말기 > 빡공단31기 SQL' 카테고리의 다른 글
Sqld 시험전 최종정리요약 (0) | 2023.03.18 |
---|---|
Sqld 38회기출강의정리 (0) | 2023.03.08 |
빡공단31기 SQL 26강 SELECT절 서브쿼리 (1) | 2023.02.26 |
빡공단31기 SQL 25강 (1) | 2023.02.25 |
빡공단31기 SQL 24강 JOIN차이점 따로 찾아볼것 (0) | 2023.02.24 |