DML 실습
1. PLAYER 테이블에서 팀별 최대 몸무게인 선수의 TEAM_ID, REGION_NAME, PLAYER_NAME, WEIGHT 검색
(WHERE IN 사용하기)
- PLAYER 테이블에서 팀별 최대 몸무게
SELECT TEAM_ID, MAX(WEIGHT) FROM PLAYER
GROUP BY TEAM_ID
ORDER BY 1;
- 최종
SELECT P.TEAM_ID, REGION_NAME, PLAYER_NAME, WEIGHT
FROM PLAYER P JOIN TEAM T
ON P.TEAM_ID = T.TEAM_ID
AND (P.TEAM_ID, P.WEIGHT) IN (SELECT TEAM_ID, MAX(WEIGHT) FROM PLAYER GROUP BY TEAM_ID);
2. DEPT 테이블의 LOC별 평균 급여를 반올림한 값과 각 LOC별 SAL(평균 급여)의 총 합 조회
SELECT D.LOC, ROUND(AVG(E.SAL)), SUM(E.SAL)
FROM DEPT D JOIN EMP E
ON D.DEPTNO = E.DEPTNO
GROUP BY D.LOC;
3. EMP 테이블에서 HIREDATE가 FORD의 입사년도와 같은 사원 전체 정보 조회
SELECT * FROM EMP
WHERE TO_CHAR(HIREDATE, 'YYYY-MM-DD')
LIKE (SELECT SUBSTR(TO_CHAR(HIREDATE, 'YYYY-MM-DD'), 1, 4) FROM EMP WHERE ENAME = 'FORD')||'%';
4. AVG 함수를 쓰지 않고 PLAYER 테이블에서 선수들의 평균 키 구하기(NULL 미포함)
SELECT SUM(HEIGHT) / COUNT(HEIGHT) FROM PLAYER;
※ AVG 함수 사용
SELECT AVG(HEIGHT) FROM PLAYER;
※ NULL인 선수들은 키를 170으로 변경(NULL 포함)
SELECT AVG(NVL(HEIGHT, 170)) FROM PLAYER;