이 포스트는 도서 "SQL로 맛보는 데이터 전처리 분석"을 베이스로 학습한 내용을 정리한 포스트이다.
https://www.yes24.com/Product/Goods/86544423
SQL로 맛보는 데이터 전처리 분석 - 예스24
SQL을 이용하여 현업에서 자주 사용되는 KPI 지표를 직접 추출해본다데이터 분석을 하기 위해서는 데이터베이스에 존재하는 데이터를 직접 추출할 수 있어야 한다. SQL은 우리가 데이터베이스에
www.yes24.com
이어서 다음은 WHERE 구문이다.
WHERE 그리고 조건문 연산자
💡 WHERE 구문은 조건문에 사용된다.
특정 값을 가지거나 대소관계를 조건으로 적용할 수 있다.
SELECT *
FROM orderdetails
WHERE priceeach < 30; #priceeach 컬럼의 값이 30 미만인 조건문
➕ BETWEEN은 A에서 B까지의 데이터만 출력할 수 있는 연산자다.
SELECT *
FROM orderdetails
WHERE priceeach BETWEEN 30 AND 50; #priceeach 값이 30에서 50 사이인 값들만 출력한다.
➕ IN은 OR 같이 컬럼 값이 A 또는 B의 데이터를 출력하는 연산자다.
#OR 연산자 사용
SELECT
customernumber
, country
FROM customers
WHERE country = 'USA' OR country = 'Canada' OR country = 'France'
;
#IN 연산자 사용
SELECT
customernumber
, country
FROM customers
WHERE country IN ('USA', 'Canada', 'France')
;
결과는 같지만 코드는 전혀 다른 형태로 작성된다. 상황에 맞게 필요한 연산자를 사용하자.
➕ NOT IN은 선택한 값을 제외한 데이터를 출력한다.
SELECT
customernumber
, country
FROM customers
WHERE country NOT IN ('USA', 'Canada', 'France')
;
country의 값이 USA, Canada, France가 아닌 모든 데이터가 출력되는 걸 확인할 수 있다.
➕ IS NULL은 결측치가 있는 데이터를 찾아낸다. NOT을 응용해 결측치가 없는 데이터를 찾을 수도 있다.
#employees 테이블에서 reportsto 값이 결측치인 employeenumber를 출력
SELECT employeenumber
FROM employees
WHERE reportsto IS NULL
;
#employees 테이블에서 reportsto 값이 결측치가 아닌 employeenumber를 출력
SELECT employeenumber
FROM employees
WHERE reportsto IS NOT NULL
;
➕ LIKE는 '%TEXT%'의 TEXT를 포함한 데이터를 조회한다.
SELECT
addressline1
FROM customers
WHERE addressline1 LIKE '%ST%';
ST가 포함된 데이터가 모두 조회됐다.
GROUP BY
💡 GROUP BY는 컬럼 값을 그룹으로 묶는 구문이다.
#customernumber 데이터의 수를 country와 city 별로 그룹핑
SELECT
country -- 문자 칼럼
, city -- 문자 칼럼
, COUNT(customernumber) AS n_customers
FROM customers
GROUP BY country, city
;
국가와 도시 별로 customernumber의 수로 책정한 고객 수를 n_customers 컬럼을 만들어 출력했다.
SELECT
customernumber
, checknumber
, SUM(amount)
FROM
payments
GROUP BY customernumber, checknumber
;
➕ CASE WHEN 연산자는 IF 조건문과 같은 역할을 한다.
# country 값이 USA인 데이터의 수를 N_USA로 출력
SELECT
SUM(CASE WHEN country = 'USA' THEN 1 ELSE 0 END) N_USA
FROM
customers;
# 위 코드에서 N_USA 값을 전체 데이터 수로 나눠 UA_PORTION으로 USA의 비율을 출력
SELECT
SUM(CASE WHEN country = 'USA' THEN 1 ELSE 0 END) N_USA
, COUNT(*)
, SUM(CASE WHEN country = 'USA' THEN 1 ELSE 0 END) / COUNT(*) AS USA_PORTION
FROM
customers;
WHERE와 조건문 연산자, GROUP BY에 대한 포스팅은 여기까지
다음엔 JOIN과 CASE WHEN에 대한 포스팅이 이어질 것 같다. ✋🤚
'STUDY > MySQL' 카테고리의 다른 글
MySQL/ 기본 문법 #3 (0) | 2023.10.19 |
---|---|
MySQL/ 기본 문법 (0) | 2023.10.16 |