사전캠프

TIL 20

musukie 2024. 9. 25. 18:22

  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

*

더보기
SQL 코드카타에서 LIMIT 함수를 써보았다. 강의에서는 배우지 않았지만, 다른 사람들이 공유한 답을 통해 배울 수 있었다. 오늘 배운 RANK 함수를 써보려고 했지만 아직 숙달되지 않아 코드가 실행되지 않았다. 그러나 LIMIT라는 것을 쓰니 RANK 함수를 쓰지 않고도 ORDER BY로 정렬한 후 원하는 것만 남길 수 있었다. 그리고 드디어 오늘 SQL 강의를 마무리했다. 그러나 아직 웹개발 마지막 숙제가 해결되지 않았다. 저번에 문제가 생겨 숙제를 제출하지 못했는데, 배포 환경의 차이로 인해 발생한 문제였고 조만간 해결해주신다는 답변을 받았다. 해결되고 나면 웹개발 강의의 마지막 숙제까지 제출할 것이고, 그러면 두 강의 모두 완강하게 된다. 이제 남은 사전 캠프 기간 동안에는 어려웠던 부분들을 복습하고, SQL 코드카타와 SQL 걷기반 과제를 해결하고, 알고리즘 문제도 가능하면 해볼 것이다.

* 노트 필기

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

TIL 22  (1) 2024.09.27
TIL 21  (1) 2024.09.26
TIL 19  (0) 2024.09.24
TIL 18  (1) 2024.09.23
WIL 4  (4) 2024.09.20