실무에서 자주 쓰는 SQL 쿼리 모음 (초중급 편)

250x250
728x90

 

🛠 실무에서 자주 쓰는 SQL 쿼리 모음 (초중급 편)

안녕하세요! 취준퇴준입니다. 데이터를 다루는 직무라면 SQL은 거의 필수 언어입니다.
마케터, 기획자, 데이터 분석가, PO 등 다양한 직군에서 데이터 추출 및 분석을 위해 SQL을 자주 사용하죠.
이번 글에서는 실무에서 자주 쓰이는 SQL 쿼리들을 예제와 함께 소개드릴게요!


1️⃣ WHERE 절: 조건 필터링의 기본

SELECT * 
FROM users 
WHERE gender = 'F' AND age >= 30;
  • 조건에 맞는 데이터만 추출할 때 사용
  • AND / OR / IN / BETWEEN / LIKE 같이 자주 활용
-- 20대, 30대 여성만 조회
WHERE age BETWEEN 20 AND 39 AND gender = 'F';

2️⃣ GROUP BY + COUNT: 집계의 기본 중 기본

SELECT gender, COUNT(*) AS user_count
FROM users
GROUP BY gender;
  • 성별별 사용자 수를 집계
  • SUM, AVG, MAX, MIN도 함께 자주 쓰이는 집계 함수들
-- 일자별 가입자 수
SELECT signup_date, COUNT(*) 
FROM users 
GROUP BY signup_date;

3️⃣ ORDER BY: 정렬로 통찰력을 얻자

SELECT * 
FROM products 
ORDER BY created_at DESC;
  • 최신순, 가격순, 인기순 등 순서 기반 데이터 확인 필수

4️⃣ LIMIT / TOP: 일부만 보고 싶을 때

-- 상위 10개만 확인
SELECT name, price 
FROM products 
ORDER BY price DESC 
LIMIT 10;
  • MySQL은 LIMIT, SQL Server는 TOP, Oracle은 ROWNUM 사용

5️⃣ JOIN: 진정한 SQL의 묘미

SELECT a.user_id, a.name, b.order_id, b.amount
FROM users a
JOIN orders b ON a.user_id = b.user_id;
  • INNER JOIN: 양쪽에 모두 데이터 있는 경우만
  • LEFT JOIN: 왼쪽 테이블은 다 나오고, 오른쪽은 매칭된 것만
-- 주문 내역 없는 유저까지 포함하려면
LEFT JOIN 사용

6️⃣ 서브쿼리 & WITH절: 복잡한 쿼리의 핵심

-- 가장 최근 주문일자 기준 사용자 정보 추출
SELECT *
FROM users
WHERE last_order_date = (
  SELECT MAX(order_date)
  FROM orders
);

또는

-- CTE (Common Table Expression)
WITH recent_orders AS (
  SELECT user_id, MAX(order_date) AS last_order
  FROM orders
  GROUP BY user_id
)
SELECT u.user_id, u.name, r.last_order
FROM users u
JOIN recent_orders r ON u.user_id = r.user_id;
  • 실무에서는 가독성과 재사용성을 위해 WITH 절 많이 활용

7️⃣ CASE WHEN: 조건에 따라 다른 값 넣기

SELECT name,
  CASE 
    WHEN age < 20 THEN '청소년'
    WHEN age < 65 THEN '성인'
    ELSE '시니어'
  END AS age_group
FROM users;
  • 대시보드나 리포트에서 범주화된 컬럼 만들 때 필수

🔚 마무리

SQL은 단순한 데이터 추출 언어를 넘어, 실무에서 인사이트를 도출하고 사용자 행동을 분석하는 데 필수적인 도구입니다.
오늘 소개한 쿼리들만 숙지해도 대부분의 데이터 추출 업무는 문제없이 진행 가능해요.

앞으로는 **고급 SQL 문법 (윈도우 함수, 피벗/언피벗, 재귀 쿼리 등)**도 다뤄보겠습니다.

 

 

728x90

댓글

Designed by JB FACTORY