Database/실습문제
[Database] SQL 기본 실습문제
8기_이지정
2024. 5. 17. 09:04
실습 문제
Q1. EMPLOYEE 테이블에서 급여가 350만원 이상 600만원 이하를 받는 직원의 사번, 직원명, 부서 코드, 급여 조회 (BETWEEN AND)
더보기

SELECT emp_id AS "사번", emp_name AS "직원명", dept_code AS "부서코드", salary AS "급여"
FROM employee
WHERE salary BETWEEN 3500000 AND 6000000;

Q2. EMPLOYEE 테이블에서 입사일이 '1990-01-01' ~ '2001-01-01'인 사원의 모든 컬럼 조회
더보기

SELECT *
FROM employee
WHERE hire_date >= '1990-01-01' AND hire_date <= '2001-01-01';
# WHERE hire_date BETWEEN '1990-010-01' AND '2001-01-01' 과 동일

Q3. EMPLOYEE 테이블에서 전화번호 처음 3자리가 010이 아닌 사원의 이름, 전화번호 조회
더보기

SELECT emp_name AS "직원명", phone AS "전화번호"
FROM employee
WHERE phone NOT LIKE '010%';

Q4. EMPLOYEE 테이블에서 이름 중에 '하'가 포함된 사원의 직원명, 주민번호, 부서 코드 조회
더보기

SELECT emp_name AS "직원명", emp_no AS "주민 번호", dept_code AS "부서코드"
FROM employee
WHERE emp_name LIKE '%하%';

Q5. EMPLOYEE 테이블에서 가입일이 가장 늦은 회원 3명의 모든 데이터를 조회
더보기

SELECT *
FROM usertbl
ORDER BY mDate DESC
LIMIT 3
;

Q6. usertbl 테이블에서 name으로 내림차순 정렬하여 아이디,이름, 가입일을 조회
더보기

SELECT userID AS "아이디",
NAME AS "이름",
mDate AS "가입일"
FROM usertbl
ORDER BY NAME DESC;
# ORDER BY가 가장 마지막에 수행되기 때문에 별칭이나 별칭의 순서로도 기입 가능
# ORDER BY `이름` DES과 동일
# ORDER BY 2 DESC과 동일
# 하지만 WHERE절은 SELECT절 보다 먼저 실행되기 때문에 별칭이나 별칭의 순서 기입 불가능

Q6. employee 테이블에서 부서별 사원의 수, 보너스를 받는 사원의 수, 급여의 합, 평균 급여, 최고 급여, 최저 급여를 조회(부서별 내림차순 정렬)
더보기

-- employee 테이블에서 부서별 사원의 수, 보너스를 받는 사원의 수, 급여의 합, 평균 급여
-- 최고 급여, 최저 급여를 조회, 부서별로 내림차순 정렬
SELECT dept_code,
COUNT(*) AS "사원의 수",
COUNT(bonus) AS "보너스를 받는 사원의 수",
SUM(salary) AS "급여의 합",
AVG(salary) AS "평균 급여",
MAX(salary) AS "최고 급여",
MIN(salary) AS "최저 급여"
FROM employee
GROUP BY dept_code
ORDER BY dept_code DESC
;

Q7. EMPLOYEE 테이블에서 부서별로 급여가 300만원 이상인 직원의 평균 급여를 조회
더보기

SELECT dept_code, AVG(salary)
FROM employee
WHERE salary >= 3000000
GROUP BY dept_code
;

Q8. EMPLOYEE 테이블에서 부서별 평균 급여가 300만원 이상인 부서의 부서 코드, 평균 급여를 조회
더보기

SELECT dept_code, AVG(salary)
FROM employee
GROUP BY dept_code
HAVING AVG(salary) >= 3000000
;

Q9. EMPLOYEE 테이블에서 직급별 총 급여의 합이 10,000,000 이상인 직급만 조회
더보기

SELECT job_code, SUM(salary)
FROM employee
GROUP BY job_code
HAVING SUM(salary) >= 10000000
;

Q10. EMPLOYEE 테이블에서 부서별 보너스를 받는 사원이 없는 부서만 조회
더보기

SELECT dept_code,
COUNT(bonus)
FROM employee
GROUP BY dept_code
HAVING COUNT(bonus) = 0
ORDER BY dept_code DESC
;
