SQL 52
SELECT h.flavor
from first_half h
join icecream_info i
on h.flavor=i.flavor
where h.total_order > 3000
and i.ingredient_type = 'fruit_based'
order by h.total_order desc
테이블 join하고 어떤 조건을 입력해야 하는지만 이해하면 쉽게 풀 수 있는 문제.
총 주문량을 계산해야 하는가, 싶었지만 다행히 명시되어 있었다.
SQL 53
SELECT user_id,
product_id
from online_sale
group by user_id, product_id
having count(*) > 1
order by user_id, product_id desc
생각해 볼 포인트
group by를 사용해 문장 순서대로 동일한 '유저'가 다시 구매한 '물품'을 묶어준다.
이 과정에서 id별로 구매된 물품들이 묶인다.
재구매 건을 출력해야 하므로, 분류된 행에 갯수가 '1건 이상'인 경우를 출력해야 했다.
'건'수는 count로 집계하여 조건을 주면 될 것 같았다.
그러나 where절은 group by보다 먼저 실행되고 (분류 반영이 안됨),
count()함수를 비롯한 집계 함수를 사용할수 없다.
따라서 group by 이후에 실행되고, 집계함수 사용이 가능한 조건절인 having을 사용했다.
약간 생각해야 할 포인트들이 많아서 까다롭다고 생각 된 문제였다.
어떤 포인트에 어떤 함수와 구문을 사용해야 하는지 인지하고 있다면
아마도 비교적 쉽게 풀이 할 수 있지 않았을까 생각한다.
SQL 54
SELECT max(datetime)
from animal_ins
최대값을 구하는 함수 max()가 날짜에도 적용된다는 사실을 알고 있으면 바로 풀 수 있는 문제였다.
아마도 쉬어가는 코너.
SQL 55
SELECT u.user_id,
u.nickname,
concat(u.city,' ',u.street_address1,' ',u.street_address2) ADDR,
concat(
substr(u.tlno,1,3),
'-',
substr(u.tlno,4,4),
'-',
substr(u.tlno,8,4)
) TLNO
from used_goods_board b
join used_goods_user u
on b.writer_id = u.user_id
group by b.writer_id
having count(*) >= 3
order by u.user_id desc
생각해 볼 포인트
3건 이상 게시글을 작성한 사람을 어떻게 정의할 것인가?
53번과 비슷한 유형. group by를 게시글을 작성한 사람(writer_id)기준으로 두고,
having문을 사용하여 count집계 후, 3이상이라는 조건을 주었다.
각기 다른 쿼리에 놓여져 있는 주소를 어떻게 합칠 수 있는가?
concat()함수를 사용했다. 가독성을 위해 중간에 '공백( )'을 함께 삽입했다.
구분자는 +가 아닌 쉼표(,)였는데 이 부분을 착각했더니,
sum과 같은 계산식이 되어 알 수 없는 값을 출력했었다.
전화번호에 '하이픈(-)'을 어떻게 삽입할 것인가?
cocat()함수와 substr()함수를 혼합하여 사용했다.
substr()은 컬럼, 시작번호, 유지 할 갯수 순으로 작성이 되어야 하는데,
갯수를 자릿수로 착각해서 오류를 냈다.
변형/가공해야 하는 부분이 많았던 문제였다.
이전에 많이 사용하지 않았던 함수들을 사용해야 했다보니,
함수 공식이 잘 기억나지 않아 오류를 많이 범했다.
오늘의 TIL에 들어 갈 내용이 제일 많을 예정인 문제.
ALGORITHM 26
★다시 풀어 볼 문제
def solution(absolutes, signs):
answer = 0
for i in range(len(absolutes)):
if signs[i]==True:
answer+=absolutes[i]
else:
answer-=absolutes[i]
return answer
생각해 볼 포인트
이 부분들에 대한 답은 다시 한번 더 풀어보고 재 작성할 필요가 있다.
이번에는 문제 자체를 이해하지 못했다.
뭘 구하라는건지, 그리고 뭘 사용하면 되는건지, 주어진 값은 뭔지...
결국 남이 짜놓은 코드를 보고 나서야 문제를 이해했다.
이제 알고리즘은 코드를 보고 읽는 것이 가능한 수준이 된 것 같은데,
문제 자체를 이해하지 못해서 전개를 못하는 일이 잦다.
어떻게 해야, 그리고 언제쯤 스스로 수식을 생각하는 일이 가능해질까?