반응형

본 글은 책 "칼퇴족 김대리는 알고 나만 모르는 SQL 기초 편"의 정리 내용입니다.

논리 연산자 IN 은 여러 개의 OR 연산자를 하나로 묶은 것과 같음

IN 논리 연산자를 이용한 데이터 추출

IN 연산자


SELECT 열이름 FROM 테이블명 WHERE 비교할 열 이름 IN (조건1, 조건2);
  • IN 연산자는 여러 조건들 중 하나만 만족해도 출력 → 여러 개의 OR 연산자를 하나로 묶은 것과 같음

예제 (테이블명 : BRNCH_INFO)


  • 각 열에 대한 설명
    : 영업점 번호, 영업점 이름, 영업점 신선일, 영업점 폐쇄일, 영업점 인원, 경영평가
BRNCH_NO  BRNCH_NM  OPEN_DT  CLOSE_DT  BRANCH_NUM  BRNCH_PERF
789 시청 1990-03-12 NULL 13 A
640 여의도 2005-08-07 NULL 8 B
368 대치 2005-08-01 2013-07-09 13 C
248 창동 2000-11-30 NULL 12 A
547 종각 1993-02-21 NULL 11 C
780 명동 1999-09-22 NULL 8 A
987 역삼 2008-08-30 NULL 7 B
456 대학로 2010-12-01 NULL 8 B
650 신촌 2002-05-17 NULL 10 C
  • Primary Key는 BRNCH_NO
더보기
CREATE TABLE BRNCH_INFO
(
BRNCH_NO INT NOT NULL,
BRNCH_NM CHAR(20) NOT NULL,
OPEN_DT date NOT NULL,
CLOSE_DT date NULL,
BRNCH_NUM INT NOT NULL,
BRNCH_PERF CHAR(20) NOT NULL
);

INSERT INTO BRNCH_INFO
VALUES
(789, '시청', '1990-03-12', NULL, 13, 'A'),
(640, '여의도', '2005-08-07', NULL, 8, 'B'),
(368, '대치', '2005-08-01', '2013-07-09', 13, 'C'),
(248, '창동', '2000-11-30', NULL, 12, 'A'),
(547, '종각', '1993-02-21', NULL, 11, 'C'),
(780, '명동', '1999-09-22', NULL, 8, 'A'),
(987, '역삼', '2008-08-30', NULL, 7, 'B'),
(456, '대학로', '2010-12-01', NULL, 8, 'B'),
(650, '신촌', '2002-05-17', NULL, 10, 'C');

문제


Q1. 위 테이블에서 직원 수가 10명 또는 8명이면서 경영평가가 'A' 또는 'B'인 영업점 번호, 영업점 이름, 영업점 인원, 경영평가를 출력하는 쿼리문

BRNCH_NO BRNCH_NM BRNCH_NUM BRNCH_PERF
640 여의도 8 B
780 명동 8 A
456 대학로 8 B
더보기
SELECT BRNCH_NO, BRNCH_NM, BRNCH_NUM, BRNCH_PERF
FROM BRNCH_INFO
WHERE BRNCH_NUM IN (8, 10)
 AND BRNCH_PERF IN ('A', 'B');

NOT IN 연산자


SELECT 열이름 FROM 테이블명 WHERE 비교할 열 이름 NOT IN (조건1, 조건2);
  • NOT IN 연산자는 뒤에 있는 조건을 부정할 때 사용
  • IN 연산자 내부의 조건들은 OR 인 반면, NOT IN 연산자 내부의 조건들은 AND

문제


Q2. 아직 폐쇄되지 않았거나 2000년도 이전에 신설한 영업점 중 경영평가가 ‘A’가 아닌 영업점 번호, 영업점 이름, 신설일, 폐쇄일, 경영평가를 출력

BRNCH_NO BRNCH_NUM OPEN_DT BRNCH_NUM BRNCH_PERF
368 대치 2005-08-01 2013-07-09 C
547 종각 1993-02-21 NULL C
더보기
SELECT BRNCH_NO, BRNCH_NM, OPEN_DT, CLOSE_DT, BRNCH_PERF
FROM BRNCH_INFO
WHERE CLOSE_DT IS NOT NULL OR OPEN_DT < '2000-01-01')
      AND BRNCH_PERF NOT IN ('A');

 

반응형

+ Recent posts