[내일배움캠프 데이터분석 사전캠프]+아티클스터디, SQL조건문

유기홍·2025년 4월 24일
post-thumbnail

📆 TIL: 2025.04.24 (목)


📘 아티클 스터디: 데이터 리터러시를 높이는 방법 (화해 사례 기반)

🔗 아티클 링크 바로가기


[주제]

데이터를 효과적으로 활용하기 위한 조직(팀 화해) 내 데이터 리터러시의 활용 방법


[목차]

  • 데이터 리터러시란?
  • 데이터 기반 사고방식
  • 데이터를 탐색할 수 있는 환경
  • 데이터 분석가와 데이터 플랫폼의 역할

[아티클 요약]

  • 데이터 리터러시란 데이터를 이해하고 해석해서 실제 문제 해결에 활용할 수 있는 능력을 의미함.
  • 조직 전반에 데이터 기반 사고방식을 확산시키기 위해, 실험 문화와 관련 교육이 실제 업무와 연결되어야 함.
  • 이를 위해 데이터맵, 대시보드 등의 도구를 통해 구성원이 스스로 데이터를 탐색하고 사용할 수 있는 환경을 구축해야 함.
  • 이러한 문화 형성을 위해 중요한 존재가 바로 데이터 분석가데이터 플랫폼.
  • 데이터 분석가는 단순 분석을 넘어서, 구성원이 데이터를 자연스럽게 다룰 수 있도록 환경을 설계하고 지원하는 역할을 수행해야 함.
  • 이를 위해 데이터 웨어하우스, 데이터 카탈로그 등 플랫폼 기반의 도구들을 적극 활용해 실질적인 분석이 가능하도록 해야 함.

🌱[인사이트]

  • 데이터 분석가는 단순히 데이터를 다루는 사람이 아니라,
    조직 전체가 데이터를 잘 활용할 수 있도록 환경을 만들고 사고방식을 바꾸는 사람이라는 점이 인상 깊었음.
  • 특히 “분석가가 직접 분석하는 것보다, 구성원이 스스로 분석하게 만드는 문화를 만드는 것”이 훨씬 중요하다는 것을 알게 되었음.

🧠 SQL 학습 내용

📌 오늘 배운 개념

  • 서브쿼리 (Subquery)
    → 쿼리 안에 또 다른 쿼리를 넣어서 중간 결과를 기반으로 추가 작업을 수행할 수 있음
    → 복잡한 조건을 정리하거나, 계산 결과를 다시 활용할 때 유용

  • JOIN (조인)
    INNER JOIN, LEFT JOIN 등으로 여러 테이블의 데이터를 연결
    → 오늘은 food_orderscustomers 테이블을 customer_id로 연결해서 사용

  • 여러 조건을 한 번에 처리하는 방법
    CASE WHEN, BETWEEN, AND, OR 등을 활용해서
    복잡한 분류 작업을 하나의 SELECT문에서 처리하는 방식 연습
    → 예: 식당별 평균 주문금액과 주문자 연령에 따라 그룹 나누기

✅ 실습 예제 쿼리

SELECT restaurant_name,
       CASE 
           WHEN price <=5000 THEN 'price_group1'
           WHEN price >5000 AND price <=10000 THEN 'price_group2'
           WHEN price >10000 AND price <=30000 THEN 'price_group3'
           ELSE 'price_group4'
       END AS price_group,
       CASE 
           WHEN age <30 THEN 'age_group1'
           WHEN age BETWEEN 31 AND 39 THEN 'age_group2'
           WHEN age BETWEEN 40 AND 49 THEN 'age_group3'
           ELSE 'age_group4'
       END AS age_group
FROM (
    SELECT 
        a.restaurant_name,
        AVG(price) AS price,
        AVG(age) AS age
    FROM food_orders a 
    INNER JOIN customers b ON a.customer_id = b.customer_id
    GROUP BY 1
) c
ORDER BY 1;

❌ 처음에 오답낸 쿼리

SELECT restaurant_name, a.avg_price, a.avg_age,
       CASE WHEN a.avg_price <= 5000 THEN 'price_group_1'
            WHEN a.avg_price <= 10000 THEN 'price_group_2'
            WHEN a.avg_price <= 30000 THEN 'price_group_3'
            ELSE 'price_group_4' END AS price_group
       CASE WHEN a.avg_age <= 29 THEN 'age_group_1'
            WHEN a.avg_age BETWEEN 30 AND 39 THEN 'age_group_2'
            WHEN a.avg_age BETWEEN 40 AND 49 THEN 'age_group_3'
            ELSE 'age_group_4' END AS age_group
FROM (
    SELECT 
        f.restaurant_name,
        AVG(f.price) AS avg_price,
        AVG(c.age) AS avg_age
    FROM food_orders f 
    JOIN customers c ON f.customer_id = c.customer_id
    GROUP BY f.restaurant_name
) a;

🛠 오류 포인트

  • CASE 구문 사이에 , 쉼표가 빠짐
    → price_group 다음에 , 없이 바로 age_group으로 이어짐 → 문법 에러 발생

  • AS 키워드 누락 가능성, 식별자 연결 문제 등도 영향 줄 수 있음


📝 느낀 점

  • 오늘 사전캠프 시작하고 처음으로 진~~심으로 벽을 느낌.
    서브쿼리 들어가자마자 이게 뭐지...하고 강의영상도 몇 번을 돌려봤는지 모르겠다.
    실습 예제문도 분명 내가 봤을땐 똑같은데? 싶었는데 오류가 몇 번씩 나고 수정에 수정을 거듭해서 간신히 오류 없는 쿼리문 제출...
    현직 분들은 이걸 눈 감고도 한다는 거잖아...?
    살아남을 수 있을까...?

🎯내일의 목표

  • 다양한 JOIN 연습문제 풀기

  • 서브쿼리를 직접 활용한 예제 쿼리 2~3개 만들어보기

0개의 댓글