이번 게시글은 혼동하기 쉬운 SQL명령문을 정의하고 예시를 활용하여 sql 작동 방식에 대해서 설명하겠습니다.
활용 데이터는 ALL FRUITS - Average prices (CSV format)으로 위 url에서 다운 받을 수 있습니다.
미국 농무부 경제연구소(USDA, ERS)에서 조사한 자료로 일반적으로 미국 국민이 소비하는 신선 및 가공 과일과 채소의 평균 가격 데이터 입니다.
https://www.ers.usda.gov/data-products/fruit-and-vegetable-prices.aspx
총 62개의 과일 또는 채소의 데이터로 8개의 칼럼으로 구성되어 있습니다.
Fruit: Varchar 타입
From: Varchar 타입 - Canned / Dried / Fresh / Frozen / Juice 로 되어 있습니다.
RetailPriceUnit: Varchar
Yield - real (실수형 숫자 타입으로 소수점 이하의 값이 포함된 숫자를 의미합니다.)
CupEquivalentSize - real
CupEquivalentPrice - real
Where절은 From절에서 테이블을 필터링합니다.
Having절은 Group by 로 만들어진 테이블을 필터링 합니다.
# 예시1.
select form, avg(yield) as avg_yield
from Fruit_Prices
WHERE Yield > 0.5
group by Form
HAVING RetailPrice > 1.2
1. form과 yield평균 값을 새로운 칼럼인 avg_yield를 생성합니다.
2. Where: Yield 가 0.5 이상인 값들을 필터링합니다.
3. group by: Form별로 그룹화하면서 avg_yield값이 생성됩니다.
4. 그룹화된 값들을 가지고 retailprice가 1.2 보다 큰 값들만 추출합니다.
Where: From절의 테이블을 필터링하고
On: Join절인 테이블 테이블 결합조건의 기준을 세워줍니다.
# 예시2.
Invoice 테이블과 Customer 테이블이 있다.
두 테이블은 Customerid를 기준으로 조인할 수 있습니다.
CustomerID를 기준으로 조인하고 조인된 결과에서 total값이 5 보다 큰 값들만 추출하려고 합니다.
select a.invoiceid, a.CustomerId, a.Total, b.FirstName
from Invoice as a
join Customer as b
on a.CustomerId = b.CustomerId
WHERE a.Total > 5
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!