TIL
사전캠프 3일차
도원좀비
2025. 1. 22. 17:34
조회한 데이터에 아무 값이 없을 때
없는 값 제외하기
| select name, avg(age) avg_age, avg(if(age<>'not given', age, null)) avg_age2 from users group by 1 |
다음과 같은 쿼리로 사용 할 수 없는 값을 연산에서 제외 해준다. 또는
| select 컬럼1, 컬럼2 ......... from 테이블1 a left join 테이블2 b a.id=b.id where b.id is not null |
where 조건절로 해결해준다.
| select 컬럼1, 컬럼2 ......... coalesce(컬럼, 조건)"null 제거" from 테이블1 a left join 테이블2 b a.id=b.id where b.id is not null |
coalesce를 통하여 null값을 다른 값으로 채워 줄 수 있다.
상식적이지 않은 데이터 해결하기
조건문으로 범위 정하기
| select customer_id, name, email, gender, age, case when age<15 then 15 when age>80 then 80 else age end "범위를 지정해준 age" from customers |
Pivot table
Pivot table : 2개 이상의 기준으로 데이터를 집계할 때 보기 쉽게 배열하여 보여주는 방식
pivot table의 기본 구조
| 구분 컬럼 | |
| 집계 기준 | 데이터 |
예시
| select age, max(if(gender='male', order_count, 0)) male, max(if(gender='female', order_count, 0)) female from ( select b.gender, case when age between 10 and 19 then 10 when age between 20 and 29 then 20 when age between 30 and 39 then 30 when age between 40 and 49 then 40 when age between 50 and 59 then 50 end age, count(1) order_count from food_orders a inner join customers b on a.customer_id=b.customer_id where b.age between 10 and 59 group by 1, 2 ) t group by 1 order by 1 desc |
날짜 포맷과 조건(포맷 함수)
| 년 | Y(4자리),y(2자리) |
| 월 | M,m |
| 일 | d,e |
| 요일 | w |
| 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 |