1. 직업이 ANALST, MANAGER 인 사원들의 이름, 직업, 월급, 월급의 순위를 출력하고자 한다
순위 1위인 사람이 2명일때 다음 순위가 3위가 아닌 2위가 되도록 출력하기
rank는 1 1 ->3
dense rank 는 1 1 ->2
로 출력해준다
2. 81년도에 입사한 사원들의 직업, 이름, 월급, 순위를 출력하는데, 직업별로 월급이 높은 순서대로 순위 부여하기
1981년에 입사한 사원들에 대한 조건을 간단히 해보고 싶어 작성해본 hiredate = to_date('1980', 'RRRR') 쿼리가 오류가 발생했다.
어떻게 입력해야 가능할라나,,
##공부하다가 알아냈는데 첫 줄 쿼리터 잘못짰다
직업별 월급이 높은 순서니까 dense_rank() over(partition by job order by sal desc)가 되어야한다,,,
where절에선
mysql에선 where year(hiredate) = 1981 이 가능하지만
sql에선 extract 함수를 사용해줘야한다
●EXTRACT란?
EXTRACT 함수는 SQL에서 날짜와 시간 값에서 지정된 구성 요소를 추출하는 함수
이 함수를 사용하여 날짜와 시간 값을 분리하여 필요한 정보를 가져올 수 있다
EXTRACT(unit FROM datetime_expression)
unit은 추출하려는 구성 요소를 지정하는 부분으로datetime_expression은 추출하려는 날짜 또는 시간 값을 나타낸다
YEAR 또는 YYYY: 날짜 또는 시간 값의 연도를 추출
MONTH 또는 MM: 날짜 또는 시간 값의 월을 추출
DAY 또는 DD: 날짜 또는 시간 값의 일을 추출
HOUR 또는 HH: 시간 값의 시간을 추출
MINUTE 또는 MI: 시간 값의 분을 추출
SECOND 또는 SS: 시간 값의 초를 추출
ex) 날짜 값을 사용하여 연도, 월, 일을 추출하는 예시코드
SELECT EXTRACT(YEAR FROM hiredate) AS hireyear,
EXTRACT(MONTH FROM hiredate) AS hiremonth,
EXTRACT(DAY FROM hiredate) AS hireday
FROM employees;
++ between and 사용하는 코딩
'SQL' 카테고리의 다른 글
SQL 14(데이터 분석 함수로 순위의 비율 출력하기/ CUME_DIST) (0) | 2023.05.12 |
---|---|
SQL 13(데이터 분석 함수로 등급 출력하기 / NTILE) (0) | 2023.05.11 |
SQL 11(데이터 분석 함수로 순위 출력하기 RANK: rank() over (order by ~) , PARTITION BY) (0) | 2023.05.09 |
SQL 10(COUNT 건수 출력하기) (0) | 2023.05.08 |
SQL 9( 평균값 AVG / 토탈값 SUM) (0) | 2023.05.04 |