본문 바로가기

WIL

WIL 02/02

1. 이번주 주요 학습 내용

1)SQL

<문제 116. 1321. Restaurant Growth : 윈도우 함수-집계 행 지정, LIMIT 활용>

with cte as
(select visited_on,
        sum(amount) as amount
from customer
group by visited_on)

select visited_on,
    sum(amount) over (order by visited_on rows between 6 preceding and CURRENT ROW) as amount,
    round(avg(amount*1.00) over (order by visited_on rows between 6 preceding and current row), 2) as average_amount
from cte
order by visited_on
limit 6, 18446744073709551610;

 

*윈도우 함수 행 지정 익혀 둘 것! : sum() over (order by ~ rows between ~ preceding and current row)

sum(amount) over (order by visited_on rows between 6 preceding and CURRENT ROW

 

 

 


<문제 124. 1484. Group Sold Product By The Date : GROUP_CONCAT>

SELECT
  sell_date,
  COUNT(DISTINCT product) AS num_sold,
  GROUP_CONCAT(DISTINCT product ORDER BY product) AS products
FROM Activities
GROUP BY sell_date
ORDER BY sell_date;

GROUP_CONCAT() : 그룹화한 데이터를 그대로 나열해주는 함수. GROUP BY와 같이 씀

 

*GROUP_CONCAT() 내 변수들 익혀둘 것 : order by, separator ' '

group_concat(distinct product order by product separator ':') as products
  • 위와 같은 경우, 단어 사이가 ':'으로 구분됨
  • 디폴트 : 쉼표(,)로 구분

<문제126 Find Users With Valid E-Mails : 정규표현식>

select *
from users
where mail regexp '^[a-zA-Z][a-zA-Z0-9_.-]*@leetcode[.]com$'

정답 해설

  • ^[a-zA-Z] : 맨 앞글자가 소문자 혹은 대문자 알파벳으로 이뤄져있어야 함('^' : 맨 앞글자 의미)
  • [a-zA-Z0-9_.-]* : 맨 앞글자 뒤에 소문자/대문자 알파벳 혹은 아무 숫자, '_', '.', '-' 등이 0번 이상 와야 함(*)
  • @leetcode : 도메인이 leetcode가 와야함
  • \\. or [.] : 정규표현식의 경우 보통 '.'은 어떤 문자와도 매칭되는 특수 문자로 사용되기 때문에 특수 문자가 아닌 일반 문자로서 사용하기 위해서 별도의 처리가 필요함. '\\' 또는 대괄호를 써서 일반 문자로 인식하게 할 수 있으나, 전자가 더 일반적임.  
  • com$ : 맨 마지막에 와야하는 문자의 경우 '$'를 붙임

2)Python

<문제24. 서울에서 김서방 찾기 : F-String, 문자열 포맷(FORMAT()), INDEX()>

작성한 답

def solution(seoul):
    location = 0
    for x in seoul:
        if x == "Kim":
            return f"김서방은 {location}에 있다"
        else:
            location += 1

간만에 f-string 활용해서 문제 해결.

 

간단한 답

def solution(seoul):
    return '김서방은 {}에 있다'.format(seoul.index("Kim"))

혹시나 했는데 역시나. f-string을 활용하는 것보다 훨씬 간단한 답이 있었다.

 

FORMAT() 매서드 : str.format()

  • 문자열 뒤에 사용하는 매서드.
  • 중괄호와 함께 사용하며, 중괄호에 넣을 내용을 괄호 안에 입력.
  • 중괄호 내에 채울 내용을 용도에 맞게 설정할 수 있음.
    • 서식 지정 가능(숫자 - 소수점 어떻게 표현할 것인가 등)
    • 중괄호 내 인덱스 지정(숫자 입력)해서 입력 순서 설정 가능
    • 딕셔너리와 함께 사용해서, 키워드 통해 여러 값 입력 가능

INDEX() 매서드

  • 문자열, 리스트, 튜플 자료형에서 특정 문자의 위치를 찾아줌
  • 찾는 문자열이 없으면 value error 발생
  • *find() 매서드 : 문자열에만 사용 가능. 찾는 문자가 없을 경우 -1 반환

 

 


2. WEEKLY TMI

  • 이삿짐 때문에 허리 삐끗한거가 나을듯 말듯 하다 이번주에 또 안 좋아져서 밤을 조금 설쳤더니 일주일의 절반을 낮동안 골골거린듯ㅋㅋㅋ 결국 점심시간 이용해서 한의원을 갔다오긴 했지만 아직 완전히 나은 것은 아닌듯하다ㅠ
  • 어찌어찌 들어야하는 강의를 다 들어가고, 과제도 제출하긴 했는데 골골거렸던 것 때문에 계획이 조금 틀어져버렸다. 원래는 어제까지 여유있게 강의 듣고 과제도 여유있게 끝내고 적당히 복습하다가 ADsP 공부도 하고, 프로젝트 주제도 찾고, 이전 강의들 복습도 좀 하고 그럴려고 했는데...에효 인생    주말에 여행 갔다오고 나서 부지런히 공부해야지.

'WIL' 카테고리의 다른 글

02/29 WIL  (0) 2024.02.29
02/08 WIL - 심화 프로젝트 1주차  (0) 2024.02.08
1/26 WIL  (0) 2024.01.26
1/12 WIL  (1) 2024.01.12
01/05  (0) 2024.01.05