[빅데이터 분석] 데이터 분석에 사용하는 주요 SQL 명령어

728x90

 

 

1. 개요

 

데이터를 다루는 데 있어 SQL은 필수적인 도구입니다. 특히 데이터 분석 분야에서 SQL은 데이터를 조회하고, 필터링하고, 그룹화하고, 정렬하는 등의 데이터 분석전 전처리 작업을 수행하는 데 있어서 매우 중요한 언어입니다. 이번 포스팅에서는 데이터 분석에 사용되는 주요 SQL 명령어 10가지를 살펴보겠습니다.

 

 

2. 주요 SQL 명령어

 

 1. SELECT

 

SELECT 명령어는 가장 기본적인 SQL 명령어로서, 데이터를 "선택"하는데 사용됩니다. 특정 열이나 모든 열(*)을 선택할 수 있습니다.

 

[사용법]

SELECT column1, column2, ..., columnN FROM table_name; 

 

[예시 1] employees 테이블에서 first_name과 last_name 열을 선택

SELECT first_name, last_name FROM employees;

 

[예시 2] orders 테이블에서 모든 열을 선택

SELECT * FROM orders; 

 

 2. WHERE

 

WHERE 문은 특정 조건을 만족하는 데이터만 선택하는 데 사용됩니다. 다양한 연산자(=, <>, <, >, <=, >= 등)를 사용하여 조건을 지정할 수 있습니다.

 

[사용법]

SELECT column1, column2, ..., columnN FROM table_name WHERE condition;

 

[예시 1] salary가 50000보다 큰 employees 테이블의 모든 열을 선택

SELECT * FROM employees WHERE salary > 50000;

 

[예시 2] orders 테이블에서 모든 열을 선택

SELECT * FROM orders;

 

 3. GROUP BY

 

GROUP BY 문은 특정 열을 기준으로 데이터를 그룹화하는 데 사용됩니다. 주로 집계 함수(COUNT(), SUM(), AVG(), MIN(), MAX() 등)와 함께 사용됩니다.

 

[사용법]

SELECT column1, COUNT(column2) FROM table_name GROUP BY column1; 

 

[예시 1] 각 나라별로 customers 테이블의 레코드 수를 계산

SELECT country, COUNT(*) FROM customers GROUP BY country;

 

[예시 2] 각 product_id별로 orders 테이블의 price 평균을 계산

SELECT product_id, AVG(price) FROM orders GROUP BY product_id; 

 

 

 4. HAVING

 

HAVING은 GROUP BY와 함께 사용되며, 그룹화된 결과에 조건을 부여할 때 사용합니다.

 

[사용법]

SELECT column, AGGREGATE_FUNCTION(column) FROM table GROUP BY column HAVING condition;

 

[예시 1] 나라별로 그룹화된 customers에서, 그룹의 개수가 5를 초과하는 나라와 해당 수를 출력

SELECT country, COUNT(*) FROM customers GROUP BY country HAVING COUNT(*) > 5;

 

[예시 2] product_id 별로 그룹화된 orders에서, 평균 가격이 20을 초과하는 상품의 id와 해당 평균 가격을 출력

SELECT product_id, AVG(price) FROM orders GROUP BY product_id HAVING AVG(price) > 20;

 

 5. ORDER BY

 

ORDER BY는 결과를 특정 열의 값에 따라 정렬할 때 사용합니다. 기본적으로 오름차순으로 정렬되며, 내림차순으로 정렬하려면 DESC 키워드를 사용합니다. 

 

[사용법]

SELECT column1, column2, ..., columnN FROM table_name ORDER BY column1 [ASC|DESC];

 

[예시 1] employees 테이블에서 모든 데이터를 salary 기준으로 내림차순으로 정렬하여 출력

SELECT * FROM employees ORDER BY salary DESC;

 

[예시 2] customers 테이블에서 first_name, last_name을 first_name 기준으로 오름차순으로 정렬하여 출력

SELECT first_name, last_name FROM customers ORDER BY first_name ASC;

 

 6. JOIN

 

JOIN 문은 두 개 이상의 테이블을 연결하는 데 사용됩니다. 테이블 간의 관계를 기반으로 한 테이블에서 다른 테이블의 정보를 가져오는 데 사용됩니다. JOIN은 INNER JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN, FULL (OUTER) JOIN이 있습니다.

 

[사용법]

SELECT table1.column1, table2.column2 FROM table1 JOIN table2 ON table1.common_field = table2.common_field; 

 

[예시 1] orders 테이블과 customers 테이블을 customer_id를 기준으로 JOIN하고, orders의 order_id와 customers의 customer_name을 선택

SELECT orders.order_id, customers.customer_name FROM orders INNER JOIN customers ON orders.customer_id = customers.customer_id;

 

[예시 2] employees 테이블과 departments 테이블을 department_id를 기준으로 LEFT JOIN하고, employees의 first_name과 departments의 department_name을 선택

 

SELECT employees.first_name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id; 

 

1. INNER JOIN : 두 테이블의 교집합을 반환합니다. 즉, 두 테이블에서 JOIN 조건을 만족하는 레코드만 반환됩니다

SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

 

2. LEFT (OUTER) JOIN : 첫 번째 테이블의 모든 레코드와 그에 해당하는 두 번째 테이블의 레코드를 반환합니다. 만약 두 번째 테이블에 해당하는 레코드가 없다면, NULL 값을 반환합니다.

 

SELECT Orders.OrderID, Customers.CustomerName FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

 

3. RIGHT (OUTER) JOIN : 두 번째 테이블의 모든 레코드와 그에 해당하는 첫 번째 테이블의 레코드를 반환합니다. 만약 첫 번째 테이블에 해당하는 레코드가 없다면, NULL 값을 반환합니다.

 

SELECT Orders.OrderID, Customers.CustomerName FROM Orders RIGHT JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

 

4. FULL (OUTER) JOIN : 두 테이블의 합집합을 반환합니다. 즉, 두 테이블에서 JOIN 조건을 만족하는 레코드 뿐만 아니라, 만족하지 못하는 레코드도 모두 반환합니다. 해당하는 레코드가 없는 경우 NULL 값을 반환합니다.

 

SELECT Orders.OrderID, Customers.CustomerName FROM Orders FULL JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

 

 

 7. UNION

 

 UNION은 두 개 이상의 SELECT 쿼리의 결과를 합칠 때 사용합니다. 결과의 중복을 제거하려면 UNION을, 중복을 유지하려면 UNION ALL을 사용합니다.

 

[사용법]

SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;

 

[예시 1] customers 테이블의 city와 suppliers 테이블의 city를 합쳐 중복을 제거하여 출력

SELECT city FROM customers UNION SELECT city FROM suppliers;

 

[예시 2] products 테이블의 product_name과 discontinued_products 테이블의 product_name을 합쳐 중복을 유지하여 출력

 

SELECT product_name FROM products UNION ALL SELECT product_name FROM discontinued_products; 

 

 8. SUBQUERY

 

UBQUERY는 쿼리 내의 다른 쿼리로, 한 쿼리의 결과를 다른 쿼리에서 사용할 때 유용합니다. 

 

[사용법]

SELECT column1, column2, ..., columnN FROM table_name WHERE column IN (SELECT column FROM another_table WHERE condition);

 

[예시 1] 주문량이 5보다 많은 orders 테이블의 customer_id에 해당하는 customers 테이블의 customer_name을 출력

SELECT column1, column2, ..., columnN FROM table_name WHERE column IN (SELECT column FROM another_table WHERE condition); 예시 1: SELECT customer_name FROM customers WHERE customer_id IN (SELECT customer_id FROM orders WHERE quantity > 5); 

 

[예시 2] 평균 가격보다 높은 가격을 가진 products 테이블의 product_name과 price를 출력

 

SELECT product_name, price FROM products WHERE price > (SELECT AVG(price) FROM products;

 

 9. LIMIT

 

LIMIT는 쿼리 결과의 행 수를 제한할 때 사용합니다. 

 

[사용법]

SELECT column1, column2, ..., columnN FROM table_name LIMIT number;

 

[예시 1] customers 테이블에서 상위 10개의 데이터만 출력

SELECT * FROM customers LIMIT 10;

 

[예시 2] products 테이블에서 가격이 높은 상위 5개의 product_name과 price 출력

 

SELECT product_name, price FROM products ORDER BY price DESC LIMIT 5; 

 

 

 10. INSERT INTO

 

INSERT INTO는 테이블에 새로운 행을 추가할 때 사용합니다.

 

[사용법]

INSERT INTO table_name (column1, column2, ..., columnN) VALUES (value1, value2, ..., valueN);

 

[예시 1] customers 테이블에 새로운 행 추가

INSERT INTO customers (customer_id, customer_name, country) VALUES (103, 'Tom', 'USA');

 

[예시 2] orders 테이블에 새로운 행 추가

 

INSERT INTO orders (order_id, product_id, quantity) VALUES (2048, 102, 5);

 

 11. DISTINCT

 

DISTINCT는 중복된 결과를 제거하는 데 사용합니다.

 

[사용법]

SELECT DISTINCT column1, column2, ... FROM table_name;

 

[예시 1]  employees 테이블의 first_name 컬럼에서 모든 고유한 이름을 반환

SELECT DISTINCT first_name FROM employees;

 

[예시 2]  first_name과 last_name의 조합이 고유한 모든 행을 반환

 

SELECT DISTINCT first_name, last_name FROM employees;

 

3. 마치며

 

이상으로 데이터 처리에 주로 사용되는 SQL 명령어를 알아보았습니다.  SQL은 정형화된 데이터 처리를 위해서 필수적으로 아셔야하며, 데이터 처리 시 위의 명령어만 숙지하시고 사용하셔도 효과적으로 데이터를 처리하실 수 있으실 겁니다.

 

 


방문해주셔서 감사드립니다. 

이글이 도움이 되셨다면, 공감, 댓글, 구독 부탁드릴께요!

 

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유