20일차

Suhyeon Lee·2024년 10월 29일
0

CodeKata

SQL

35번 문제 팀 활동

  • 문제
    입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
    • 입양을 간 동물 보호 기간
      • DATEDIFF(animal_outs 테이블 datetime, animal_ins 테이블 datetime) + 1
      • INNER JOIN
    • 두 마리
      • LIMIT 2
SELECT
  ai.animal_id
  , ai.name
FROM 
  animal_ins ai 
  JOIN animal_outs ao 
  ON ai.animal_id = ao.animal_id
ORDER BY 
  DATEDIFF(ao.datetime, ai.datetime) DESC
LIMIT 2
;
WITH in_out_rank AS (
  SELECT
    ai.animal_id
    , ai.name
    , RANK() OVER (ORDER BY DATEDIFF(ao.datetime, ai.datetime) DESC) AS date_rank
  FROM
    animal_ins ai
    JOIN animal_outs ao
    USING(animal_id)
  ORDER BY
    date_rank
)
SELECT
  animal_id
  , name
FROM
  in_out_rank
WHERE
  date_rank < 3
LIMIT 2
;

79. Big Countries

  • 제출한 쿼리
SELECT
  name
  , population
  , area
FROM
  world
WHERE
  area >= 3000000
  OR population >= 25000000
;

참고할 만한 다른 쿼리

  • UNION을 쓴 사람이 있었음
select name,population,area
from World 
where population >=25000000 
UNION
select name,population,area
from World 
where area >=3000000;

80. Article Views Ⅰ

  • 작성한 쿼리
SELECT
  DISTINCT author_id AS id
FROM
  views
WHERE
  author_id = viewer_id
ORDER BY
  author_id
;

참고할 만한 다른 쿼리

  • DISTINCT 대신 GROUP BY
SELECT
author_id AS id
FROM
views
WHERE author_id = viewer_id
GROUP BY author_id
ORDER BY author_id
;
  • ORDER BY절에서는 SELECT에서 설정한 alias 써도 됨
select distinct author_id as id 
from Views 
where author_id = viewer_id 
order by id asc;

81. Invalid Tweets

  • 작성한 쿼리
SELECT
  tweet_id
FROM
  tweets
WHERE
  CHAR_LENGTH(content) > 15
;

참고할 만한 다른 쿼리

SELECT
    tweets.tweet_id
FROM
    tweets
WHERE
    LENGTH(tweets.content) > 15

LENGTH 함수는 문자의 Byte 길이를 가져옵니다.
CHAR_LENGTH(CHARACTER_LENGTH) 함수는 문자의 Byte 수를 계산하지 않고 단순히 몇 개의 문자가 있는지를 가져옵니다.
SELECT LENGTH('안녕'); → 결과: 6
SELECT CHARACTER_LENGTH('안녕'); → 결과: 2

Python

25. 나누어 떨어지는 숫자 배열

  • 작성한 코드
def solution(arr, divisor):
    answer = []
    arr.sort()
    for i in arr:
        if i % divisor == 0:
            answer.append(i)
        elif i % divisor != 0:
            pass
    return answer or [-1]

return하려는 값이 null일 때(list로는 []일 때) or B를 쓰면 B를 return함!
꽤 유용한 코드 방식이니 꼭 기억할 것

def solution(arr, divisor):
    return sorted([i for i in arr if i%divisor == 0]) or [-1]

참고할 만한 다른 풀이

def solution(arr, divisor):
    answer = []
    for i in arr:
        if i % divisor == 0:
            answer.append(i)
    if answer == []:
        return [-1]
    answer.sort()
    return answer
  • for문을 아래와 같이 해도 됨
    for i in range(len(arr)):
        if arr[i] % divisor == 0:
            answer.append(arr[i])
def solution(arr, divisor):
    arr = [x for x in arr if x % divisor == 0];
    arr.sort();
    return arr if len(arr) != 0 else [-1];

Pandas 과제

5번, 6번

SDL

집계 함수
group by와 pivot table

아티클 스터디

데이터 시각화는 왜 중요할까?

회고

  • 첫 번째 커리어 코칭에 참여했는데 유익하고 즐거웠다.
    • 가고 싶은 분야 명확하게 정하기
      • 게임 LQA 경험을 살려서 게임회사 PM 쪽 생각해보는 것도 괜찮겠다는 의견 주셨음
    • 내가 부족한 점, 힘들었던 점을 잘 적어두고 그걸 극복해 나가는 과정을 보여주면 이력서, 포트폴리오 작성 시 도움이 되므로 기록을 꾸준히 해 두라고 하셨음
      • 내 생각을 적는 게 어색해서 TIL 작성할 때 회고를 생략하고 지나갈 때가 많았는데 오늘부터라도 잘 작성해보려고 함
  • 파이썬 배우는 건 재미있는데 배운 걸 내 것으로 소화하는 데 시간이 너무 많이 걸리는 것 같음
    • 과제나 코드카타 풀다가 궁금한 게 생기면 그걸 끝까지 파고드는 편이라 당장 필요하지 않은 부분까지 너무 깊게 들어가서 전체를 살필 시간이 부족한 것 같음
      • 적당한 선에서 마무리하고 배운 부분 전체적으로 복습하려고 노력하기!
profile
2 B R 0 2 B

0개의 댓글