SPRINT6

권나현·2025년 7월 21일

스프린트미션6 목표

  • 기본 SQL 문법 연습
  • 백엔드 서버에서 ORM으로 사용하던 것을 직접 SQL로 작성해 보기

이번 스프린트미션6 에서는 평소 백엔드 개발에서 ORM(Object Relational Mapping)을 사용하며 자연스럽게 다뤘던 데이터베이스 쿼리를, 직접 SQL로 작성하며 기초부터 다시 다지는 시간을 가졌다.

PostgreSQL을 기반으로 pizza_place라는 데이터셋을 활용하여 초급부터 고급까지 다양한 SQL 문제를 풀며, 단순 SELECT문부터 GROUP BY, JOIN, 서브쿼리, 집계함수, 날짜 필터링, 페이지네이션 등 실무에서 자주 접하는 쿼리 패턴들을 직접 연습했다.

1. 데이터베이스 세팅

  • pgAdmin 4를 통해 pizza_place라는 새 데이터베이스 생성하고

  • Codeit에서 제공한 pizza_place_sales.sql을 실행하여 테이블 및 데이터를 불러옴

  • 테이블 구성: orders, order_details, pizzas, pizza_types

  • 문제 풀이 전략

    • sprint-mission-6.sql 파일에 각 문제 번호와 함께 주석을 달고, 쿼리를 정리하기
  • 문제별로 SELECT, JOIN, WHERE, GROUP BY, ORDER BY, LIMIT/OFFSET, COUNT, SUM, BETWEEN 등을 적절히 사용하여 작성하기

  • 모든 쿼리는 pgAdmin의 Query Tool에서 실행하고 결과 확인하며 검증하기

2. 기억에 남는 쿼리 예시

2-1. 하루 주문이 80건 이상인 날짜만 조회

SELECT date, COUNT(*) AS order_count
FROM orders
GROUP BY date
HAVING COUNT(*) >= 80
ORDER BY order_count DESC;

2-2. 피자 크기별 총 수익 계산

SELECT pizzas.size, SUM(pizzas.price * order_details.quantity) AS total_revenue
FROM order_details
JOIN pizzas ON order_details.pizza_id = pizzas.id
GROUP BY pizzas.size
ORDER BY total_revenue DESC;

2-3. 커서 기반 페이지네이션

SELECT *
FROM orders
WHERE id < 42
ORDER BY id DESC
LIMIT 10;

3. 느낀점

  • ORM이 데이터베이스 접근을 편리하게 해주긴 하지만,
    그 바탕에 있는 SQL 문법을 직접 이해하고 써보는 경험은 정말 중요하다는 걸 새삼 느꼈다.

  • GROUP BY, JOIN, 집계 함수 등을 조합하면서 데이터를 어떻게 바라보고 요약할 것인지 사고하는 능력이 조금은 길러졌다.

  • 특히 고급 문제에서는 실무에서 볼 수 있는 리포트용 쿼리 패턴(Top 10, 일별 합계, 총 수익 계산 등)은 너무 어려웠다.

  • pgAdmin을 통해 직접 데이터베이스를 설정하고 쿼리를 실행해보면서 쉬운듯 하며 어려웠고 SQL 언어가 코드라기보다는 “데이터에 질문하는 언어”라는 걸 더 깊이 이해하게 되었다.

4. 마무리하며

  • 스프린트미션6은 단순히 쿼리 실습을 넘어서, 데이터를 정확하게 바라보고, 원하는 형태로 뽑아내는 사고력을 키우는 데 큰 도움이 됐다.
  • 앞으로 ORM을 사용할 때, 그 아래 어떤 쿼리가 작동하고 있을지 떠올릴 수 있는 개발자가 되기 위해 이 경험을 꼭 기억해두고 싶다.
profile
node.js 백앤드 개발자가 되기 위한 Study Vlog

0개의 댓글