코딩 테스트

SQL 테스트 (1)

orin602 2024. 12. 30. 13:41

sample데이터가 없어서 쿼리문 작성만...

 

1. SELECT

> EMPLOYEES 테이블에서 first_name, last_name, hire_date 컬럼을 조회하기.

SELECT first_name, last_name, hire_date
  FORM employees;

2. 조건절(WHERE)

> 급여가 5000 이상인 직원 조회

> employees 테이블에서 salary가 5000 이상인 직원들의 first_name, last_name, salary 조회하기.

SELECT first_name, last_name, salary
  FROM employees
 WHERE salary >= 5000;

2-1. 특정 날짜 이후 입사한 직원 조회

> employees 테이블에서 hire_date가 2015.01.01 이후인 직원들의 employee_id, first_name, hire_date 조회하기

SELECT employee_id, first_name, hire_date
  FROM employees
 WHERE hire_data > '2015-01-01';

3. 집계 함수(GROUP BY)

> 부서별 직원 수 조회

> employees 테이블에서 각 부서별 직원 수를 구하기. 컬럼: employee_id, department_id

SELECT employee_id, COUNT(department_id) AS employee_count
  FROM employees
GROUP BY department_id;

3-1. 부서별 급여 합계 조회

employees 테이블에서 각 부서별 급여 합계 구하기

SELECT department_id, SUM(salary) AS total_salary
  FROM employees
GROUP BY department_id;

4. ORDER BY

> 급여가 높은 순으로 직원 조회하기

> employees 테이블에서 salary가 높은 순서대로 first_name, last_name, salary 조회.

SELECT first_name, last_name, salary
  FROM employees
ORDER BY salary DESC;

>  입사일 순으로 직원 조회하기

> employees 테이블에서 hird_date를 기준으로 가장 오래된 입사일을 가진 직원부터 조회.

SELECT first_name, last_name, hire_date
  FROM employees
ORDER BY hire_date ASC;

5. JOIN

> 두 테이블 조인(INNER JOIN)

> employees 테이블과 departments 테이블을 조인해 직원 이름과 부서 이름을 조회.

>> employees = employee_id, first_name, last_name, department_id

>> departments = department_id, department_name

SELECT e.first_name, e.last_name, d.department_name
  FROM employee e
INNER JOIN departments d ON e.department_id = d.department_id;

> LEFT JOIN 사용

> employees 테이블과 departments 테이블을 LEFT JOIN해 모든 직원과 해당 부서 이름 조회.

> 부서가 없는 직원도 포함되야 함.

SELECT e.first_name, e.last_name, d.department_name
  FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id;

6. 서브 쿼리

> 급여가 최고인 직원 조회

>  employees 테이블에서 가장 높은 급여를 받는 직원들의 first_name, last_name, salary 조회.

SELECT first_name, last_name, salary
  FROM employees
 WHERE salary = (SELECT MAX(salary) 
        	   FROM employees);

> 특정 부서에서 급여가 3000 이상인 직원 조회.

> employees 테이블에서 급여가 3000 이상인 직원들 중 department_id가 5인 직원들의 first_name, last_name, salary 조회.

SELECT first_name, last_name, salary
  FROM employees
 WHERE salary >= 3000
   AND department_id = 5;

7. LIMIT , OFFSET

> 상위 5명의 직원 조회

> salary가 높은 상위 5명의 직원들의 first_name, last_name, salary 조회

SELECT first_name, last_name, salary
  FROM employees
ODER BY salary DESC
 LIMIT 5;

 

'코딩 테스트' 카테고리의 다른 글

SQL 테스트 (2)  (0) 2024.12.30
배열 및 문자열  (0) 2024.12.30
기본 알고리즘  (0) 2024.12.30