IN 연산자

기록하는 용도·2022년 9월 13일
0

IN 연산자

특정 값이 포함되는 데이터를 조회하고자 할 때 사용하는 연산자

	SELECT 컬럼명, 컬럼명
	FROM 테이블명
	WHERE 컬럼명 IN('데이터','데이터')
	
	ex) MAKER 가 농심 또는 오뚜기인 상품의 정보들을 조회
	
	NOT IN 연산자
	특정 값이 포함되지않은 데이터를 조회하고자 할 때 사용
	
	SELECT 컬럼명, 컬럼명
	FROM 테이블명
	WHERE 컬럼명 NOT IN('데이터','데이터')
	
	ex) MAKER 가 농심 또는 오뚜기가 아닌 상품의 정보들을 조회
    

예제1

1. food 테이블 생성

CREATE TABLE FOOD(
	ID NUMBER PRIMARY KEY,
	NAME VARCHAR2(100) NOT NULL,
	MAKER VARCHAR2(100) NOT NULL,
	PRICE NUMBER NOT NULL
)

2. 시퀀스 생성

create sequence food_seq;

3. 데이터 삽입

insert into food(id,name,maker,price) values(food_seq.nextval,'후라이드','또래오래',15000);
insert into food(id,name,maker,price) values(food_seq.nextval,'소곱창','대한곱창',20000);
insert into food(id,name,maker,price) values(food_seq.nextval,'양념치킨','또래오래',16000);
insert into food(id,name,maker,price) values(food_seq.nextval,'참치회','이춘복참치',35000);
insert into food(id,name,maker,price) values(food_seq.nextval,'파닭','또래오래',17000);
insert into food(id,name,maker,price) values(food_seq.nextval,'미니전골','대한곱창',18000);

4. 정보 조회

SELECT * FROM FOOD;

5. maker 조회

SELECT DISTINCT MAKER FROM FOOD;

6. IN을 이용해서 MAKER가 대한곱창 또래오래인 FOOD를 조회

SELECT * FROM FOOD WHERE MAKER IN ('또래오래', '대한곱창')

7. 위와 동일한 표현 IN을 OR로 표현할 수 있다.

SELECT ID,NAME,MAKER,PRICE FROM FOOD WHERE MAKER ='대한곱창' OR MAKER='또래오래'

8. NOT IN을 이용해서 MAKER가 대한곱창 또래오래가 아닌 FOOD를 조회

SELECT ID,NAME,MAKER,PRICE FROM FOOD WHERE MAKER NOT IN('대한곱창','또래오래')

9. 위와 동일한 표현

SELECT ID, NAME, MAKER, PRICE FROM FOOD WHERE MAKER <> '대한곱창' AND MAKER <> '또래오래'




예제2.

전체 FOOD 평균가(AVG) 보다 MAKER별 FOOD 평균가가 낮은 MAKER의 FOOD정보(NAME,PRICE,MAKER)를 PRICE내림차순으로 조회

전체 FOOD 평균가(AVG)

SELECT AVG(PRICE) FROM FOOD;

MAKER별 FOOD 평균가

SELECT MAKER, AVG(PRICE) FROM FOOD GROUP BY MAKER;

전체 FOOD 평균가(AVG) 보다 MAKER별 FOOD 평균가가 낮은 MAKER

SELECT MAKER FROM FOOD GROUP BY MAKER HAVING AVG(PRICE) < (SELECT AVG(PRICE) FROM FOOD)

SELECT NAME, PRICE, MAKER FROM FOOD WHERE MAKER IN (SELECT MAKER FROM FOOD GROUP BY MAKER HAVING AVG(PRICE) < (SELECT AVG(PRICE) FROM FOOD)) ORDER BY PRICE DESC;



예제3.

JDBC_EMPLOYEE의 JOB 별 사원수가 3명 이상인 JOB에 해당하는 EMPNO, NAME, JOB, SALARY를 SALARY 내림차순으로 조회

SELECT * FROM JDBC_EMPLOYEE

JOB 별 사원수가 3명 이상인 JOB

SELECT JOB FROM JDBC_EMPLOYEE GROUP BY JOB HAVING COUNT(JOB) >=3

전체 sql

SELECT  EMPNO, NAME, JOB, SALARY 
FROM JDBC_EMPLOYEE 
WHERE JOB IN 
	(SELECT JOB 
     FROM JDBC_EMPLOYEE 
     GROUP BY JOB 
     HAVING COUNT(JOB) >=3) 
ORDER BY SALARY DESC;

0개의 댓글