샘플 데이터가 없어서 쿼리문만 작성
1. SELECT / WHERE / AND / OR
> 이름이 john 이거나 급여가 4000 이상인 직원 조회하기.
> employees 테이블에서 first_name이 john이거나 salary가 4000 이상인 직원들의 first_name, last_name, salary 조회.
SELECT first_name, last_name, salary
FROM employees
WHERE first_name = 'John' OR salary >= 4000;
> 특정 연도에 입사한 직원 조회하기.
> employees 테이블에서 hird_date가 2010년에 해당하는 직원들의 first_name, last_name, hire_date 조회.
SELECT first_name, last_name, hire_date
FROM employees
WHERE YEAR(hire_date) = 2010;
2. GROUP BY / HAVING
> 부서별 평균 급여 조회
> empolyees 테이블에서 각 부서별 평균 급여를 구하고, 평균 급여가 5000 이상인 부서만 출력.
SELECT department_id, AVG(salary) AS average_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) >= 5000;
> 직 수가 3명 이하인 부서 조회
> employees 테이블에서 직원 수가 3명 이하인 부서들의 department_id와 해당 부서의 직원 수를 조회.
SELECT department_id, COUNT(employee_id) AS employee_count
FROM employees
GROUP BY department_id
HAVING COUNT(employee_id) <= 3;
3. JOIN
> 직원과 부서 정보 조회(INNER JOIN)
> employees 테이블과 departments 테이블을 조인해 employee_id, first_name, last_name, department_name 조회.
SELECT E.employee_id, E.first_name, E.last_name, D.department_name
FORM employees E
INNER JOIN departments D ON E.department_id = D.department_id;
> 부서와 직원 정보 조회(LEFT JOIN)
> 두 테이블을 LEFT JOIN해 모든 직원의 first_name, last_name, 부서 이름 출력.
> 부서가 없는 직원도 포함.
SELECT E.first_name, E.last_name, D.department_name
FROM employees E
LEFT JOIN departments D ON E.department_id = D.department_id;
4. 서브쿼리
> 최고 급여를 받는 직원 조회
SELECT first_name, last_name, salary
FORM employees
WHERE salary = (SELECT MAX(salary)
FROM employees);
5. 문자열 함수
> 직원 이름을 대문자로 조회.
> first_name과 last_name을 합쳐서 대문자로 출력하기.
SELECT UPPER(CONCAT(first_name, ' ', last_name)) AS full_name
FROM employees;
> 이름에 "S"가 포함된 직원 조회
SELECT first_name, last_name
FORM emlpoyees
WHERE first_name LIKE '%S%' OR last_name LIKE '%S%';
6. 날짜 함수
> 입사일 기준 1년 미만인 직원 조회
SELECT first_name, last_name, hire_date
FROM employees
WHERE hire_date > CURDATE() - INTERVAL 1 YEAR;
> 입사일이 6개월 이전인 직원 조회
SELECT first_name, last_name, hire_date
FROM employees
WHERE hire_date > CURDATE() - INTERVAL 6 MONTH;
7. LIMIT / OFFSET
> 상위 10명의 직원 조회
> 급여가 높은 순으로 상위 10명의 직원들 조회.
SELECT first_name, last_name, salary
FROM employees
ORDER BY salary DESC
LIMIT 10;
> 11번부터 20번까지의 직원 조회
> employee_id가 11번부터 20번까지인 직원 조회.
SELECT first_name, last_name, emlpoyee_id
FROM employees
WHERE employee_id BETWEEN 11 AND 20;
8. 복합 쿼리
> 부서별 최고 급여를 받는 직원 조회
SELECT e.first_name, last_name, e.salary, e.department_id
FORM employees
INNER JOIN
(SELECT department_id, MAX(salary) AS max_salary
FORM employees
GROUP BY department_id
)
subquery ON e.department_id = subquery.department_id
AND e.salary = subquery.max_salary;
'코딩 테스트' 카테고리의 다른 글
SQL 테스트 (1) (0) | 2024.12.30 |
---|---|
배열 및 문자열 (0) | 2024.12.30 |
기본 알고리즘 (0) | 2024.12.30 |