Data Analytics/Online Course

[강의 후기] SQL 데이터 분석 (1/3)

Senni_S2 2024. 7. 14. 14:16

'데이터분석가 입문 필수 SQL 부트캠프ㅣ억대 연봉 현직자'  _ 이상훈 강사님

SQL은 데이터 분석에서 반드시 알아야 하는 언어 중 하나로 데이터를 능숙하게 추출하고 가공할 수 있으려면 SQL이 필수적입니다. 

본 강의는 코딩 실습을 통해 실무 방식을 터득하고, 기초부터 심화 까지 배울 수 있는 강의입니다. 

강의 순서는 다음과 같습니다. 

 

Day1 

Table

Create 

Create Table 로 Table 을 생성합니다. 

CREATE TABLE customers(
customer_number INT,
customer_name VARCHAR(50),
phone VARCHAR(50)
);

CREATE TABLE customers2(
customer_numbercustomers2test INT NOT NULL,
customer_name VARCHAR(50) NOT null,
phone VARCHAR(50) NOT null
);

Insert

생성한 Table 에 Insert 구문으로 데이터를 입력합니다. 

INSERT INTO customers
	(customer_number, customer_name, phone)
VALUES
	(1, '이상훈', '010-1234-5678'),
	(2, '김상훈', '010-1234-5679'),
	(3, '박상훈', '010-1234-5679');

 

기타

Delete : 데이터 삭제

Truncarte : 데이터 초기화

Update : 테이블 내용 변경

Alter : 테이블 조건 변경

ALTER TABLE customers RENAME newcustomers;

ALTER TABLE newcustomers ADD 지역 VARCHAR(50);

ALTER TABLE newcustomers MODIFY 지역 INT;

ALTER TABLE newcustomers CHANGE 지역 REGION VARCHAR(10);

ALTER TABLE newcustomers DROP REGION;

 

 

SELECT * FROM newcustomers;
SELECT customer_name, phone FROM newcustomers;

# ALIAS(별칭)
SELECT 이름, 영어, 수학, 수학+영어 AS 영수
FROM exercise1;

# LIMIT / OFFSET : 결과 집합의 특정 부분을 제한하거나 건너뛸 때 사용함
# LIMIT 은 반환되는 레코드의 수를 제한하는데 사용. ex) LIMIT 5 : 처음 5개 
# OFFSET 은 처음 몇 개의 레코드를 건너뛸 것인지 지정하는데 사용. ex) LIMIT 10 OFFSET 5 : 처음 5개 건너 뛰고 10개 선택

SELECT * FROM exercise1 LIMIT 5;

SELECT * FROM exercise1 LIMIT 3 OFFSET 5;
SELECT * FROM exercise1 LIMIT 5,3; # 5번째 행부터 3개의 행을 출력

#DISTINCT : 중복된 항 하나만 남기고 선택
SELECT DISTINCT 수학 FROM exercise1;

 

Day 2

Where

SELECT * 
FROM 테이블
WHERE 조건
;

 

 

ex)

SELECT * 
FROM orderdetails
WHERE orderLineNumber = 1
;

SELECT *
FROM orderdetails
WHERE productCode = 'S24_3969'
;

SELECT * 
FROM orderdetails
WHERE quantityordered > 70

 

논리 연산자 (And, Or, Not)

And 와 Or 를 같이 사용하는 경우 AND 가 우선순위

SELECT * 
FROM orderdetails
WHERE priceeach = 35.29 
AND productcode = 's24_3969'
OR quantityordered = 46
;

 

LIKE

문자열에서 원하는 문자가 포함되어 있는지 검색

# LIKE '%CARS' : CARS로 끝나는 데이터
# LIKE 'CARS%' : CARS로 시작하는 데이터
# LIKE '%CARS%' : CARS를 포함하는 데이터

SELECT *
FROM products
WHERE productline = 'vintage cars' OR productline = 'Classic cars'
;

SELECT *
FROM products
WHERE productline LIKE '%Cars'

 

BETWEEN 

A 이상 B 이하의 데이터를 출력 

SELECT orderNumber
FROM orderdetails
WHERE quantityOrdered BETWEEN 10 AND 50 ;

 

Not between

A 이상 B 이하를 제외한 데이터

SELECT orderNumber
FROM orderdetails
WHERE quantityOrdered NOT BETWEEN 10 AND 50;

 

NOT BETWEEN 은 여집합과 같다. A보다 작고 B보다 큰 데이터를 출력한다.

 

IN

특정 값을 조회하고 싶을 때 사용함. 

SELECT customerName
FROM customers
WHERE country IN('USA', 'Canada', 'France')
;

 

NOT IN

특정 값을 포함하지 않은 데이터 조회

SELECT *
FROM 
WHERE  NOT IN(1,2,3);

SELECT*
FROM 
WHERE <> 1 AND <> 2 AND <> 3;

 

IS NULL

NULL 인 데이터 조회

SELECT *
FROM orders
WHERE comments IS NULL;

IS NOT NULL

NULL 이 아닌 데이터 조회

SELECT *
FROM orders
WHERE comments IS not NULL;

Order By

특정 컬럼을 기준으로 정렬, asc(오름차순)이 default, desc(내림차순) 은 입력해야함

ORDER BY 는 WHERE 절 다음에 오며, WHERE절은 생략이 가능함. 

SELECT * 
FROM A
WHERE ~~
ORDER BY col1 DESC, col2 ASC, ...;

 

다중 정렬 가능함

Group By

GROUP BY 절은 한 개 이상의 컬럼을 기준으로 결과를 그룹화


주로 SUM(), AVG(), COUNT(), MAX(),MIN() 등의 집계 함수와 결합되어 사용

 

GROUP BY 는 한 개 이상의 컬럼을 기준으로 그룹화하여 그 결과를 출력함

SELECT productline, COUNT(productline)
FROM products
GROUP BY productline;

SELECT productline, AVG(buyprice)
FROM products
GROUP BY productline;

SELECT productcode, SUM(quantityordered)
FROM orderdetails
WHERE orderlinenumber = 1
GROUP BY productcode;

SELECT productline, MAX(msrp)
FROM products
GROUP BY productline;

 

기타

년도는 YEAR()

 

 

 

후기 : 맥에는 SQL 설치가 힘듭니다~

SQL 입문자 입장에서 이 강의를 들으니, 개념뿐만 아니라 예제 문제가 많아 이해가 잘 됩니다.