-
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