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 '%@' ;

