반응형
집합 연산자
두 개 이상의 테이블을 조인을 쓰지 않고 연관된 데이터를 조회하는 방법.
2 개이상의 쿼리 결과를 하나의 결과로 만들어 줌.
조건 : select절의 컬럼 수가 동일하고 select절의 동일 위치에 존재하는 컬럼이 상호 호환 가능
* 반드시 동일 타입일 필요는 없음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 1. 집합 연산자의 종류 UNION : 여러 개의 SQL문의 결과를 합집합으로 출력. (중복된 행은 하나로 만듦) UNION ALL : 합집합으로 만들면서 중복된 행도 그대로 출력. INTERSECT : 여러 개의 SQL문의 결과에 대한 교집합. (중복된 행은 하나로 만듦) EXCEPT(MINUS) : 차집합 (중복된 행은 하나로 만듦) SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE TEAM_ID = 'K02' UNION SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE TEAM_ID = 'K07'; // 이정도는 IN 이나 OR 로 가능 SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE TEAM_ID = 'K02' UNION ALL SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE POSITION = 'GK' ORDER BY 1,2,3,4,5; // 팀코드가 K02 면서 포지션이 GK인 선수는 두번씩 출력될것임. UNION ALL 이 있으니까 SELECT 'P' 구분코드, POSITION 포지션, AVG(HEIGHT) 평균키 FROM PLAYER GROUP BY POSITION UNION SELECT 'T' 구분코드, TEAM_ID 팀명, AVG(HEIGHT) 평균키 FROM PLAYER GROUP BY TEAM_ID ORDER BY 1; // 그룹함수 사용해도 집합연산 가능. // SELECT 절에 존재하지 않는 컬럼 '구분코드'를 추가 가능 SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE TEAM_ID = 'K02' MINUS SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE POSITION = 'MF' ORDER BY 1,2,3,4,5; // 팀코드가 K02인 선수들에서 미드필더인 선수들을 제거. 즉, 미드필더가 아닌 K02 팀 선수를 출력 SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE TEAM_ID = 'K02' INTERSECT SELECT TEAM_ID 팀코드, PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버, HEIGHT 키 FROM PLAYER WHERE POSITION = 'GK' ORDER BY 1,2,3,4,5; // 교집합, 팀코드 K02이면서 포지션이 GK인 선수 출력 | cs |
반응형
'DB > SQLD' 카테고리의 다른 글
SQL 활용 - 서브 쿼리 (0) | 2017.09.08 |
---|---|
SQL 활용 - 계층형 질의 (0) | 2017.09.08 |
SQL 활용 - 표준 조인 (0) | 2017.09.05 |
SQL 기본 - join (0) | 2017.09.05 |
SQL 기본 - order by 절 (0) | 2017.09.04 |