SELECT
SUM(price) AS total_price
FROM
item_info
WHERE
rarity = 'LEGEND'
;
→ 다른 방법으로도 풀어보자!
SELECT
SUM(price) AS total_price
FROM
item_info
GROUP BY
rarity
HAVING
rarity = 'legend'
;
WITH max_length AS (
SELECT
fish_type
, MAX(length) AS length
FROM
fish_info
GROUP BY
fish_type
)
SELECT
id
, fish_name
, fi.length
FROM
fish_info fi
JOIN max_length ml
USING(fish_type, length)
JOIN fish_name_info fni
USING(fish_type)
ORDER BY
id
;
→ 다른 방법으로도 풀어보기
WITH length_rank AS (
SELECT
*
, RANK() OVER (PARTITION BY fish_type ORDER BY length DESC) AS rnk
FROM
fish_info
)
SELECT
id
, fish_name
, length
FROM
length_rank
JOIN fish_name_info
USING(fish_type)
WHERE
rnk = 1
ORDER BY
id
;
WITH MAX_LENGTH AS (
SELECT FISH_TYPE, MAX(LENGTH)
FROM FISH_INFO
GROUP BY 1
)
SELECT ID, FISH_NAME, LENGTH
FROM FISH_INFO
JOIN FISH_NAME_INFO USING(FISH_TYPE)
WHERE (FISH_TYPE, LENGTH) IN (SELECT * FROM MAX_LENGTH)
ORDER BY 1;
SELECT
I.ID
, N.FISH_NAME
, I.LENGTH
FROM (SELECT
*
, MAX(LENGTH) OVER (PARTITION BY FISH_TYPE) AS MAX_LENGTH
FROM FISH_INFO
) AS I
JOIN FISH_NAME_INFO AS N
ON I.FISH_TYPE = N.FISH_TYPE
WHERE I.LENGTH = I.MAX_LENGTH
ORDER BY ID
def solution(today, terms, privacies):
answer = []
today_y, today_m, today_d = map(int, today.split('.'))
today_num = today_y*12*28 + today_m*28 + today_d
terms_dict = dict()
for t in terms:
terms_type, period = t.split()
terms_dict[terms_type] = int(period)*28
for idx, p in enumerate(privacies):
cnt = idx+1
date, terms_type = p.split()
date_y, date_m, date_d = map(int, date.split('.'))
date_num = date_y*12*28 + date_m*28 + date_d
if date_num + terms_dict[terms_type] - 1 < today_num:
answer.append(cnt)
return answer
# 반복되는 코드
today_y, today_m, today_d = map(int, today.split('.'))
today_num = today_y*12*28 + today_m*28 + today_d
date_y, date_m, date_d = map(int, date.split('.'))
date_num = date_y*12*28 + date_m*28 + date_d
# ↓
# 함수를 만들어 처리
def to_days(date):
y, m, d = map(int, date.split("."))
return y*12*28 + m*28 + d
# 날짜를 일수로 변환
def to_days(date):
y, m, d = map(int, date.split("."))
return y*12*28 + m*28 + d
def solution(today, terms, privacies):
answer = []
today = to_days(today)
# 약관 정보
term = dict()
for t in terms:
type_, period = t.split()
term[type_] = int(period)*28
# 개인정보 만료기간과 오늘 일수를 비교하여 파기 목록에 추가
for idx, p in enumerate(privacies):
numb = idx+1
date, type_ = p.split()
# 오늘보다 만료기간이 짧으면 파기해야 한다.
if to_days(date) + term[type_] -1 < today:
answer.append(numb)
return answer
읽어보면 좋을 코멘트
광고별로 퍼널의 목적이 다르다고 가정하신게 좋은 접근이신 거 같아요.
광고 채널이 같다고 생각하기 쉬운데 실제로는 브랜드 인지가 목표인지 매출이 목표인지에 따라 채널 믹스를 달리하거든요.
잘한 팀 선정 사유 작성
첫 번째로 선택한 팀
두 번째 선택 팀