BookmarkSubscribeRSS Feed

[SQL] 혼동하기 쉬운 SQL 명령문

Started ‎08-31-2024 by
Modified ‎08-31-2024 by
Views 469

이번 게시글은 혼동하기 쉬운 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

1. Where & Having

 

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 보다 큰 값들만 추출합니다.

 

 

 

2. Where & On

 

Where: From절의 테이블을 필터링하고

On: Join절인 테이블 테이블 결합조건의 기준을 세워줍니다.

 

 

# 예시2.

 

image (8).png

 

 

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
Version history
Last update:
‎08-31-2024 08:30 AM
Updated by:
Contributors

SAS Innovate 2025: Register Now

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!

Article Labels
Article Tags