1. 이름에 '형'자가 들어가는 직원들의 사번, 사원명, 직급명을 조회하세요.
SELECT
EMP_ID
, EMP_NAME
, JOB_NAME
FROM EMPLOYEE
JOIN JOB USING(JOB_CODE)
WHERE EMP_NAME LIKE '%형%';
1) SELECT 절에 필요한 컬럼명 작성
2) FORM절에 메인 테이블명과 JOIN할 테이블명 작성 후 컬럼명 작성(같은 컬럼명은 USING)
3) '형'자가 들어간 직원들만 조회하기 위해 WHERE절에 LIKE연산자 사용
2. 보너스포인트를 받는 직원들의 사원명, 보너스포인트, 부서명, 근무지역명을 조회하세요.
SELECT
EMP_NAME
, BONUS
, DEPT_TITLE
, LOCAL_NAME
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN LOCATION ON(LOCATION_ID = LOCAL_CODE)
WHERE BONUS IS NOT NULL;
1) 필요한 컬럼명을 SELECT절에 작성
2) FROM절에 메인테이블과 조인할 테이블명 작성 후 컬럼명 조인
3) 보너스포인트를 받는 직원들을 조회하기 위해 NULL값을 제외한 행을 가져오도록 작성
3. 주민번호가 70년대 생이면서 성별이 여자이고, 성이 전씨인 직원들의 사원명, 주민번호, 부서명, 직급명을 조회하세요.
SELECT
EMP_NAME
, EMP_NO
, DEPT_TITLE
, JOB_NAME
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN JOB USING(JOB_CODE)
WHERE SUBSTR(EMP_NO, 1, 2) >= 70
AND SUBSTR(EMP_NO, 1, 2) < 80
AND SUBSTR(EMP_NO, 8, 1) = 2
AND EMP_NAME LIKE '전%';
4. 부서코드가 D2인 직원들의 사원명, 직급명, 부서명, 근무지역명을 조회하세요.
SELECT
EMP_NAME
, JOB_NAME
, DEPT_TITLE
, LOCAL_NAME
FROM EMPLOYEE
JOIN JOB USING(JOB_CODE)
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
JOIN LOCATION ON(LOCATION_ID = LOCAL_CODE)
WHERE DEPT_CODE = 'D2';
=> 부서코드가 D2인 직원들만 조회하기 위해 WHERE절에 조건 작성
5. 해외영업팀에 근무하는 사원명, 직급명, 부서코드, 부서명을 조회하세요.
SELECT
EMP_NAME
, JOB_NAME
, DEPT_CODE
, DEPT_TITLE
FROM EMPLOYEE
JOIN JOB USING(JOB_CODE)
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID)
WHERE DEPT_TITLE LIKE '해외영업%';
= > WHERE절에 LIKE연산자 사용하여 해외영업팀만 조회하기
6.한국과 일본에 근무하는 직원들의 사원명, 부서명, 지역명, 국가명을 조회하세요.
SELECT
E.EMP_NAME
, D.DEPT_TITLE
, L.LOCAL_NAME
, N.NATIONAL_NAME
FROM EMPLOYEE E
JOIN DEPARTMENT D ON(E.DEPT_CODE = D.DEPT_ID)
JOIN LOCATION L ON(D.LOCATION_ID = L.LOCAL_CODE)
JOIN NATIONAL N ON(L.NATIONAL_CODE = N.NATIONAL_CODE)
WHERE N.NATIONAL_NAME IN('한국', '일본');
= > WHERE절에 IN연산자 사용하여 한국과 일본 직원들만 조회
7. 본인 급여 등급의 최소급여(MIN_SAL)를 초과하여 급여를 받는 직원들의 사원명, 직급명, 급여, 보너스포함 연봉을 조회하세요. 연봉에 보너스포인트를 적용한다
SELECT
E.EMP_NAME
, J.JOB_NAME
, E.SALARY
, (E.SALARY + (E.SALARY * NVL(E.BONUS, 0))) * 12
FROM EMPLOYEE E
JOIN JOB J ON(E.JOB_CODE = J.JOB_CODE)
JOIN SAL_GRADE S ON(E.SAL_LEVEL = S.SAL_LEVEL)
WHERE E.SALARY > S.MIN_SAL;
=> 연봉에 보너스를 포함 시키기 위해 (E.SALARY + (E.SALARY * NVL(E.BONUS, 0))) * 12 작성
WHERE절에 최소급여를 초과하는 조건 작성
'프로그래밍 > SQL 문제풀이' 카테고리의 다른 글
프로그래머스 SQL 1단계 : 흉부외과 또는 일반외과 의사 목록 출력하기 (0) | 2023.01.05 |
---|---|
프로그래머스 SQL 1단계 : 인기있는 아이스크림 (0) | 2023.01.05 |
프로그래머스 SQL 1단계 : 과일로 만든 아이스크림 고르기 (0) | 2023.01.05 |
프로그래머스 SQL 1단계 : 조건에 맞는 도서 리스트 출력하기 (0) | 2023.01.05 |
01_OracleDB_SQL 함수 연습 문제 (0) | 2022.07.18 |