개인 사담

SQL 공부 1탄

락_빠 2024. 8. 12. 14:32
  • 개념 1: SQL의 의미
    1. Structured Query Language: 데이터에 구조화된(=사전에 지정된) 질문을 하는 언어
  • 개념 2: 데이터 탐색 (Select)
    • 모든 컬럼 추출하기
      • SELECT * (Ctrl + Enter =결과보기)
          • → 모든 컬럼
      • FROM gmv_trend
    • 특정 컬럼 추출하기
      • SELECT category (Ctrl + Enter =결과보기)
      • FROM gmv_trend
    • 중복값 없이 특정 컬럼 추출하기
      • SELECT DISTINCT category (Ctrl + Enter =결과보기)
        • DISTINCT → 중복값 없이 확인하겠다는 의미
      • FROM (gmv_trend
  • 개념 3: 특정 연도의 매출 탐색 (Where)
    • 조건이 하나일 때 (숫자열: between, 대소비교)
      • SELECT *
      • FROM gmv_trend
      • WHERE yyyy = 2021
        • yyyy=2021 → 2021년 데이터만 추출
      • WHERE yyyy BETWEEN 2018 AND 2021
        • BETWEEN → yyyy 사이의 데이터만 추출
      • WHERE yyyy >= 2019
        • yyyy >= 2019 → 2019년 이후의 데이터만 추출
          • = → 같거나 크다
    • 조건이 하나일 때 (문자열: =, !=, like, in, not in)
      • SELECT *
      • FROM gmv_trend
      • WHERE category = ‘(원하는 값)’
        • ‘(원하는 값)’ 의 데이터만 추출
          • ‘ ‘ ← 작은 따옴표 입력 필수

      • SELECT *
      • FROM gmv_trend
      • WHERE category != ‘(원하는 값)’
        • ‘(원하는 값)’ 이 아닌 데이터만 추출
          • != → NOT EQUAL
      • WHERE category <> ‘(원하는 값)’
        • ‘(원하는 값)’ 이 아닌 데이터만 추출
          • <> → NOT EQUAL

      • SELECT *
      • FROM gmv_trend
      • WHERE category like ‘%(원하는 값의 일부 단어)%’
        • like ‘%(원하는 값의 일부 단어)%’ → 정확한 값을 알지 못해도 컬럼에서 데이터를 찾을 때 사용
        • %(단어% → % 앞에 어떤 말이 있을 수도 있고 없을 수도 있음, % 뒤에 어떤 말이 있을 수도 있고 없을 수도 있음
          • 실무에서는 앞뒤 전부 붙여서 사용

      • SELECT *
      • FROM gmv_trend
      • WHERE category IN (‘값 1’, ‘값 2’)
        • IN ( ) → 여러 개의 값 데이터를 추출할 때 사용
      • SELECT *
      • FROM gmv_trend
      • WHERE category NOT IN (‘값 1’, ‘값 2’)
        • NOT IN ( ) → 여러 개의 값이 포함되지 않은 데이터를 추출할 때 사용
  • 개념 4: 조건이 두개일 때 주의사항 (and, or)
    • 조건이 여러개일 때 (and, or)
      • SELECT *
      • FROM gmv_trend
      • WHERE category = ‘(원하는 값)’
      • WHERE yyyy = 2021 → and yyyy = 2021
        • WHERE은 SQL 문장에서 한번만 올 수 있음
        • 원하는 값+년도에 해당하는 데이터 추출

      • SELECT *
      • FROM gmv_trend
      • WHERE category = ‘(원하는 값)’
      • or = ‘(원하는 값)’
        • IN 쿼리문과 동일

      • SELECT *
      • FROM gmv_trend
      • WHERE gmv >= 10000
        • gmw → 거래액
      • or unitsold > 100
        • unitsold → 판매 수량

      • SELECT *
      • FROM gmv_trend
      • WHERE gmv >= 10000
        • gmw → 거래액
      • or unitsold > 100
        • unitsold → 판매 수량
      • AND category = ‘(원하는 값)’
      <aside> 📌 Where 절에 and와 or를 함께 쓸 때에는, 반드시 ( )로 의미 단위끼리 묶는다
      • 매출액이 100만원 이상이거나 판매수량이 50개 이상이면서, 식음료 카테고리여야 해.
        • GOOD CASE
          • (매출액>= 100만원 or 판매수량 >= 50) and 카테고리 = ‘식음료’
        • BAD CASE
          • 매출액> = 100만원 or (판매수량>= 50 and 카테고리 = ‘식음료’)
      • 외모가 준수하거나 성격이 좋으면서, 유머코드가 잘 통했으면 해
        • (외모 준수 or 성격 좋음) and 유머코드 잘 맞음 </aside>
    • 내가 생각하는 조건
  • 개념 5: 카테고리별 매출 분석 (group by, 집계함수)
    • 카테고리별 매출 분석
      • SELECT category, sum (gmv)
      • FROM gmv_trend
      • GROUP BY category
        • 집계를 위해서는
        1. SELECT 절에서 sum과 같은 집계함수를 쓰고, 괄호 안에 컬럼명을 적기
        2. GROUP BY 에 집계해야 하는 컬럼명을 반드시 적어 주어야 한다
    • sum 사용 시, 컬럼명이 sum으로 바뀌지 않기 위해서
      • SELECT category, sum (gmv) AS gmv_sum
        • AS 이후 입력하는 값으로 컬럼명을 변경할 수 있다.
        • AS를 입력하지 않아도 컬럼명은 변경됨
          • SELECT category, sum (gmv) AS gmv_sum = SELECT category, sum (gmv) gmv_sum
      • FROM gmv_trend
      • GROUP BY category
        • = GROUP BY 1
          • 컬럼명 대신 숫자로 표기 가능
          • SELECT 절에 있는 (숫자) 번째 컬럼 이라는 의미
    • 카테고리별 연도별 매출
      • SELECT category, yyyy, sum (gmv) AS gmv
        • SELECT 절에서 집계함수를 사용할 때에는 집계함수 외의 모든 컬럼을 GROUP BY에 한번 더 써준다
      • FROM gmv_trend
      • GROUP BY category, yyyy
        • = GROUP BY 1, 2
    • 전체 총합
      • SELECT sum (gmv) AS gmv
        • 전체 총계를 위해 집계함수를 바로 사용하는 경우에는 GROUP BY 를 사용하지 않는다
      • FROM gmv_trend
    • 집계함수의 종류
      • SELECT sum (gmv) AS gmv_sum,
      • min(gmv) AS gmv_min,
      • max(gmv) AS gmv_max,
      • avg(gmv) AS gmv_avg
      • FROM gmv_trend