ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5일차 - null값, coalesce, pivot, 시간형식
    SQL 정리/사전캠프 2024. 3. 22. 17:50

    예상못한 query 나올떄

     

    1. null

    where column is not null

    null 데이터는 제외하라.

     

     

     

     

     

    값의 변경

    select a.order_id,
           a.customer_id,
           a.restaurant_name,
           a.price,
           b.name,
           b.age,
           coalesce(b.age, 20) "null 제거",
           b.gender
    from food_orders a left join customers b on a.customer_id=b.customer_id
    where b.age is null

     

    coalesce : b.age 가 값을 가지지 않는다면 20으로 대체하라

     

     

    2.상식적이지 않은 값들

    범위 제한 

    select name, age,
    	case when age< 15 then '15'
    		when age>= 80 then '80'
    		else age end 나이2
    from customers c

    정리 된 값을 사용.

     

     

     

    pivot table

    2개 이상의 기준으로 데이털르 집계할 때, 보기 쉽게 배열하여 보여주는 것을 의미 

     

    base data 만들기

    기반으로 pivot view 만들기

    select restaurant_name,
           max(if(hh='15', cnt_order, 0)) "15",
           max(if(hh='16', cnt_order, 0)) "16",
           max(if(hh='17', cnt_order, 0)) "17",
           max(if(hh='18', cnt_order, 0)) "18",
           max(if(hh='19', cnt_order, 0)) "19",
           max(if(hh='20', cnt_order, 0)) "20"
    from 
    (
    select a.restaurant_name,
           substring(b.time, 1, 2) hh,
           count(1) cnt_order
    from food_orders a inner join payments b on a.order_id=b.order_id
    where substring(b.time, 1, 2) between 15 and 20
    group by 1, 2
    ) a
    group by 1
    order by 7 desc

     

     

     

     

    새로운 기능

     

    시간 형식변경

     

    select date(date) date_type,
           date_format(date(date)), '%Y') "년"
           date_format(date(date)), '%m') "월"
           date_format(date(date)), '%d') "일"
           date_format(date(date)), '%w') "요일"
    from payments

    문자열 나열의 기존 컬럼(괄호 안 date)에서 시간 컬럼으로 전환 됨

    그리고 각 글자 형식별 추출? 통해 새로 작성 가능

    Y(4자리), y(2자리), m, d, w(0~6)

     

     

     

     

     

     

     

     

     

     

     

     

    '항상 주의할 점'

    '문자'삽입 간 '' 사용

    컬럼,과 컬럼, 을 구분하기위해 , 를 사용하는것.

     

     

     

    Truncated incorrect DOUBLE value

     

     

    food_order f 로 명칭 변경을 하였다면

    이를 다른 명령어에도 반영할 것. 원문 그대로 쓰면 오류 뜨더라..

    'SQL 정리 > 사전캠프' 카테고리의 다른 글

    SQL - 4일차  (0) 2024.03.20
    SQL 3-2일차 / 조건확장, 데이터 타입  (0) 2024.03.20
    SQL - 3일차  (0) 2024.03.19
    SQL - 2일차 연산자 / 범주 / 정렬  (1) 2024.03.19
    SQL - 1일차 기초문/필터링  (0) 2024.03.19
Designed by Tistory.