SELECT PLAYER_NAME, BACK_NO FROM PLAYER WHERE HEIGHT <= (SELECT AVG(HEIGHT) FROM PLAYER) ORDER BY BACK_NO;
SELECT TEAM_ID, PLAYER_NAME, BACK_NO FROM PLAYER WHERE TEAM_ID IN (SELECT TEAM_ID --IN이 아닌 =로 사용하면 Error. "동명이인"의 경우! FROM PLAYER WHERE PLAYER_NAME = '홍길동') ORDER BY TEAM_NAME;
소속팀별 키가 가장 작은 사람들의 정보 출력
SELECT TEAM_ID, PLAYER_NAME, HEIGHT FROM PLAYER WHERE (TEAM_ID, HEIGHT) IN (SELECT TEAM_ID, MIN(HEIGHT) --각각의 칼럼에 매칭되어 비교 FROM PLAYER GROUP BY TEAM_ID) ORDER BY TEAM_ID, PLAYER_NAME;
자신이 속한 팀의 평균 키보다 작은 선수들의 정보 출력
SELECT T.TEAM_NAME, MAIN_P.PLAYER_NAME, MAIN_P.HEIGHT FROM PLAYER MAIN_P, TEAM T WHERE MAIN_P.TEAM_ID = T.TEAM_ID AND MAIN_P.HEIGHT < (SELECT AVG(SUB_P.HEIGHT) FROM PLAYER SUB_P WHERE SUB_P.TEAM_ID = MAIN_P.TEAM_ID AND SUB_P.HEIGHT IS NOT NULL GROUP BY MAIN_P.HEIGHT) ORDER BY MAIN_P.PLAYER_NAME;
'20120501' ~ '20120502' 사이의 경기가 있는 경기장 조회 (EXISTS 이용)
SELECT STADIUM_ID ID, STADIUM_NAME FROM STADIUM ST WHERE EXISTS (SELECT 1 --임의의 가상 칼럼 FROM SCHEDULE SC WHERE ST.STADIUM_ID = SC.STADIUM_ID AND SC.SCHE_DATE BETWEEN '20120501' AND '20120502');
소속팀별 선수의 평균키 출력
SELECT PLAYER_NAME, HEIGHT, ROUND((SELECT AVG(HEIGHT) FROM PLAYER SUB_P WHERE SUB_P.TEAM_ID = MAIN_P.TEAM_ID), 2) FROM PLAYER MAIN_P;
Position이 “MF” 선수들의 소속팀명과 선수명 조회
SELECT T.TEAM_NAME, P.PLAYER_NAME FROM (SELECT TEAM_ID, PLAYER_NAME FROM PLAYER WHERE POSITION = 'MF') P, TEAM T WHERE P.TEAM_ID = T.TEAM_ID;
Inline View에 먼저 정렬을 수행하고, 정렬된 결과 중에서 WHERE 절에서 ROWNUM을 사용하여 일부 데이터를 추출하는 Subquery