-- 문제1) EMPLOYEES 테이블에서 입사일자 순으로 정렬한 사원번호, 이름, 업무, 급여, 입사일자,부서번호를 출력하라.
select employee_id, first_name, job_id, salary, hire_date, department_id
from employees
-- where hire_date >= '2013-01-01' (→ 2013년 이후 입사자 중에서 라는 조건 추가할 경우)
order by hire_date asc;
▶ asc(오름차순)은 생략 가능하지만 가독성을 위해 붙여주는 것이 좋다.
▶ where 조건을 추가하려면 order by 앞에 써야한다. (= order by는 마지막에 써야한다.)
-- 문제2) EMPLOYEES 테이블에서 가장 최근에 입사한 순으로 정렬한 사원번호, 이름, 업무, 급여, 입사일자,부서번호를 출력하라.
select employee_id, first_name, job_id, salary, hire_date, department_id
from employees
order by hire_date desc;
-- 문제3) EMPLOYEES 테이블에서 부서번호로 정렬한 후 부서번호가 같을 경우 급여가 많은 순으로 정렬한 사원번호, 성명, 업무, 부서번호, 급여를 출력하여라.
select employee_id, first_name, job_id, department_id, salary
from employees
order by department_id asc, salary desc;
-- 문제4) EMPLOYEES 테이블에서 첫번째 정렬은 부서번호로 두번째 정렬은 업무로 세번째 정렬은 급여가 많은 순으로 정렬한 사원번호, 성명, 입사일자, 부서번호, 업무, 급여를 출력하여라.
select employee_id, first_name, hire_date, department_id, job_id, salary
from employees
order by department_id asc, job_id asc, salary desc;
-- 문제5) EMPLOYEES 테이블에서 각 사원의 이름과 근무 달 수(입사일로부터 현재까지의 달수)를 계산하여 컬럼을 MONTHS_WORKED로 지정하시오. 결과는 정수로 반올림하여 표시하고 근무달 수를 기준으로 오름차순으로 정렬하시오.
select hire_date, round(DATEDIFF(now(), hire_date)/30) as MONTHS_WORKED
from employees
order by MONTHS_WORKED asc;
select first_name, TIMESTAMPDIFF(month, hire_date, now()) as MONTHS_WORKED
from employees
order by MONTHS_WORKED asc;
'데이터베이스' 카테고리의 다른 글
[MySQL] 그룹으로 묶기 - group by, having, distinct (0) | 2025.02.07 |
---|---|
[MySQL] 오름차순과 내림차순 정렬 - order by (1) | 2025.02.04 |
[MySQL] where(조건) 문제 12개 풀기 (1) | 2025.02.04 |
[MySQL] 테이블에서 조건에 맞는 자료 찾기 - where (1) | 2025.02.04 |
[MySQL] date 함수 (0) | 2025.02.04 |