# Write a solution to select the product id, year, quantity, and price for the first year of every product sold.
# 1번
with min_year as (
select product_id, min(year) year
from sales
group by product_id)
select
product_id,
year first_year,
quantity,
price
from sales s
where (product_id,year) in (select * from min_year) -- 복수의 where in 필터링 시 괄호를 잊지 마라
-- 2번
-- select
-- product_id,
-- year first_year,
-- quantity,
-- price
-- from sales
-- group by product_id
-- having year = min(year)
-- grouping하고 나서 select에서 grouping되지 않은 칼럼들을 마구 소환함.
-- 오류 가능성이 높아지며 대부분의 sql환경에서 구동되지 않는다.
group 함수의 주의점: group 후 select를 하려면 모두 그룹화된 칼럼이어야 한다.
2번 코드를 보면, grouping 후 select로 반환하겠다고 적어둔 칼럼이 하나도 그룹화되지 않았다.
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n //3
answer = int(tmp, 3)
return answer
int(value, base)
value 만 주어졌을 때는 해당 value를 정수로 변환시킨다.
value, base가 주어졌을 때는 base진법의 value를 10진법 정수로 바꿔준다.
ex) int('29910', 9)
9진수로 표현된 문자열 '29910'을 10진수로 변환하는 작업