

이번 스프린트미션6 에서는 평소 백엔드 개발에서 ORM(Object Relational Mapping)을 사용하며 자연스럽게 다뤘던 데이터베이스 쿼리를, 직접 SQL로 작성하며 기초부터 다시 다지는 시간을 가졌다.
PostgreSQL을 기반으로 pizza_place라는 데이터셋을 활용하여 초급부터 고급까지 다양한 SQL 문제를 풀며, 단순 SELECT문부터 GROUP BY, JOIN, 서브쿼리, 집계함수, 날짜 필터링, 페이지네이션 등 실무에서 자주 접하는 쿼리 패턴들을 직접 연습했다.
pgAdmin 4를 통해 pizza_place라는 새 데이터베이스 생성하고
Codeit에서 제공한 pizza_place_sales.sql을 실행하여 테이블 및 데이터를 불러옴
테이블 구성: orders, order_details, pizzas, pizza_types
문제 풀이 전략
문제별로 SELECT, JOIN, WHERE, GROUP BY, ORDER BY, LIMIT/OFFSET, COUNT, SUM, BETWEEN 등을 적절히 사용하여 작성하기
모든 쿼리는 pgAdmin의 Query Tool에서 실행하고 결과 확인하며 검증하기
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;
ORM이 데이터베이스 접근을 편리하게 해주긴 하지만,
그 바탕에 있는 SQL 문법을 직접 이해하고 써보는 경험은 정말 중요하다는 걸 새삼 느꼈다.
GROUP BY, JOIN, 집계 함수 등을 조합하면서 데이터를 어떻게 바라보고 요약할 것인지 사고하는 능력이 조금은 길러졌다.
특히 고급 문제에서는 실무에서 볼 수 있는 리포트용 쿼리 패턴(Top 10, 일별 합계, 총 수익 계산 등)은 너무 어려웠다.
pgAdmin을 통해 직접 데이터베이스를 설정하고 쿼리를 실행해보면서 쉬운듯 하며 어려웠고 SQL 언어가 코드라기보다는 “데이터에 질문하는 언어”라는 걸 더 깊이 이해하게 되었다.