5 - 3 조회한 데이터가 상식적이지 않은 값을 가질 때
- 상식적이지 않은 값들을 상식적인 값들로 바꿔주면 된다.
5 - 4 Pivot Table
- 2개 이상의 기준으로 데이터를 집계할 때, 보기 쉽게 배열해 보여주는 것
- Pivot Table을 만들 때는 1) 베이스 데이터를 만들어주고 2) 베이스 데이터를 이용해 pivot table을 만들어준다.
- max는 그냥 pivot view를 깔끔하게 해주기 위해 붙여주는 것으로 이해하면 됨
* max, sum, avg 등 계산하는 함수가 들어갈 때는 group by절 꼭 적기
5 - 5 Window Function - Rank, Sum
- Rank : N번째 까지의 대상을 조회하고 싶을 때
- Sum : 전체에서 차지하는 비율, 누적합을 구할 때
- 윈도우 함수를 통해 group by를 하지 않아도 덩어리별 합계를 구할 수 ㅇ
5 - 6 포맷 함수
- 데이터에 날짜를 지정하거나, 조건에 날짜를 사용해야 할 때 활용할 수 있는 기능
- date_format(date(컬럼명), '%Y%m') 등으로 활용 가능
- '%w' 형식은 요일로, 일요일은 0, 월요일은 1
5주차 숙제
SELECT cuisine_type,
max(if(age=10, order_cnt, 0)) '10대',
max(if(age=20, order_cnt, 0)) '20대',
max(if(age=30, order_cnt, 0)) '30대',
max(if(age=40, order_cnt, 0)) '40대',
max(if(age=50, order_cnt, 0)) '50대'
FROM
(
SELECT f.cuisine_type,
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_cnt
FROM food_orders f inner join customers c on f.customer_id=c.customer_id
WHERE age BETWEEN 10 and 59
group by 1, 2
) a
GROUP by 1
SQL 문제(코드카타)
- 오랜 기간 보호한 동물(1)
SELECT I.NAME,
I.DATETIME
FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID
WHERE O.DATETIME IS NULL
ORDER BY I.DATETIME
LIMIT 3
SQL 걷기반 - 공부하다보니 팀 프로젝트 시간이 왔어요!
17.
select name
from team_projects
where aws_cost>=40000
18.
select *
from team_projects
where start_date like '2022%'
19.
문제 이해를 못하겠다.
20.
select name,
CAST(SUBSTR(end_date, 9, 2) as decimal)-CAST(SUBSTR(start_date, 9, 2) as decimal) '지속 기간'
from team_projects
SQL 걷기반 - 팀 프로젝트 열심히 했으니 다시 놀아볼까요?!
21.
SELECT RANK() over (partition by region order by rating DESC) '순위'
FROM lol_users
22.
SELECT name
FROM lol_users
order by join_date desc
limit 1
23.
SELECT *,
RANK() over (partition by region order by rating DESC) '순위'
FROM lol_users
order by rating desc
24.
SELECT *,
rating/SUM(rating) over (partition by region)
FROM lol_users
*
* 노트 필기