SQL 데이터 조회와 필터링 실습
카테고리 : SQL >> Sqlgrammar
SQL 데이터 조회와 필터링 실습
이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.
실습 1
● 문제 : PAYMENT 테이블에서 단일 거래의 AMOUNT의 액수가 가장 많은 고객들의 CUSTOMER_ID를 추출하라.
단, CUSTOMER_ID의 값은 유일해야 한다.
1) 가장 큰 AMOUNT 값 추출
- 쿼리문
SELECT
K.AMOUNT
FROM
PAYMENT K
ORDER BY K.AMOUNT DESC
LIMIT 1
- 실행 결과
2) 1번의 결과를 IN으로 넣어서 CUSTOMER_ID 유일하게 추출
- 쿼리문
SELECT
DISTINCT CUSTOMER_ID
FROM PAYMENT
WHERE AMOUNT =
(
SELECT
AMOUNT
FROM PAYMENT
ORDER BY AMOUNT DESC
LIMIT 1
)
;
- 실행 결과
>> AMOUNT IN 이 아닌 AMOUNT = 으로 서브쿼리를 작성해도 된다.
3) ALIAS 지정해준다. (가독성!)
SELECT
DISTINCT A.CUSTOMER_ID
FROM PAYMENT A
WHERE A.AMOUNT =
(
SELECT
K.AMOUNT
FROM PAYMENT K
ORDER BY K.AMOUNT DESC
LIMIT 1 --LIMIT절
)
>> 결과는 위에 결과와 같으나, AMOUNT가 여러개 나옴으로 헷갈릴 수가 있다.
따라서, 가독성을 위해 ALIAS를 지정해주는 것이 좋다!
실습 2
● 문제 : 고객들에게 단체 이메일을 전송 하고자 한다.
CUSTOMER 테이블에서 고객의 EMAIL 주소를 추출하고, 이메일 형식에 맞지 않는 이메일 주소 제외시켜라.
이메일 형식을 ‘@’가 존재해야 하고, ‘@’로 시작하지 말아야 하고 ‘@’로 끝나지 말아야 한다.
# LIKE 연산자 사용하여 해결
SELECT
EMAIL
FROM
CUSTOMER
WHERE
EMAIL LIKE '%@%'
AND EMAIL NOT LIKE '@%'
AND EMAIL NOT LIKE '%@' ;