SELECT 실행 순서
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
SELECT CustomerId, AVG(Total)
FROM invoices
WHERE CustomerId >= 10
GROUP BY CustomerId
HAVING SUM(Total) >= 30
ORDER BY 2
위 쿼리문 동작하는 순서 분석하기
FROM invoices : invoices 테이블 접근
WHERE CustomerId >=10: customerid 필드가 10 이상인 레코드들 조회
GROUP BY CustomerId : customerid 기준으로 그룹화 한다
HAVING SUM(Total) >= 30 : total 필드의 값들의 합이 30 이상인 결과 필터
SELECT CustomerId, AVG(Total) : 조회된 결과에서 customerid필드와 total필드의 평균값 가져오기
ORDER BY 2 : AVG(Total) 필드 기준으로 오름차순 정렬
CASE 사용하기
프로그래밍 언어의 IF문과 같은 기능
SELECT CASE
WHEN CustomerId <= 25 THEN 'GROUP 1'
WHEN CustomerId <= 50 THEN 'GROUP 2'
ELSE 'GROUP 3'
END
FROM customers
customerid 필드값에 따라 group 1, 2, 3 나누게 된다
SUBQUERY
쿼리문 안에 다른 쿼리문 포함한 것
실행되는 쿼리에 중첩으로 위치해 정보 전달
1. 하나의 변수처럼 사용
2. 테이블을 리턴받아 사용
3. 하나의 컬럼처럼 사용
SELECT CustomerId, CustomerId = (
SELECT CustomerId
FROM customers
WHERE CustomerId =2
)
FROM customers
WHERE CustomerId < 6
IN, NOT IN
IN은 특정 값이 서브쿼리에 있는지 확인하는 것
SELECT *
FROM customers
WHERE CustomerId IN (
SELECT CustomerId
FROM customers
WHERE CustomerId < 10
)
customers테이블에서 customerid 값이 서브쿼리에 돌려받는 값에 속한 결과들로 조회
서브쿼리에서는 customerid가 10이하인 데이터 돌려주기 때문에 최종 조회된 데이터 또한 customerid가 10이하인 경우이다
NOT IN 사용하면, 서브쿼리에서 조회된 10미만을 제외한 레코드 조회
FROM
서브쿼리를 FROM에도 사용할 수 있다
SELECT *
FROM(
SELECT CustomerId
FROM customers
WHERE CustomerId < 10
)
조회된 결과를 하나의 테이블이나 조회할 대상으로 지정해 사
'데이터 분석 및 프로젝트' 카테고리의 다른 글
[딥러닝]- VGG19 모델 활용한 이미지 콜라보 만들기 (0) | 2023.05.29 |
---|---|
데이터베이스 연결 - GIT BASH, DBEAVER (0) | 2023.05.24 |
SQL 내장 함수 (0) | 2023.05.23 |
아우디 중고차 가격 예측하기 - 머신러닝 (0) | 2023.05.10 |
N111a- 과제 (0) | 2023.03.16 |