2024. 10. 10. 16:28ㆍ부트캠프 TIL
1. 프로그래머스 이용한 sql과 알고리즘 문제 해결
1-1) sql 문제 : 조건에 맞는 사용자와 총 거래금액 조회하기
ㄴ 문제 : 중고 거래 게시판 테이블과 중고 거래 회원 테이블에서 완료된 중고 거래의 총 금액이 70만원 이상이 회원의 아이디, 닉네임, 총거래금액을 조회하는 sql문을 작성해주세요. 총거래금액을 기준으로 오름차순 정렬해주세요.
ㄴ 설명_1 : 조회할 컬럼 체크 - (아이디, 닉네임, 총거래금액)
ㄴ 설명_2 : 완료된 중고거래 (WHERE 활용)
ㄴ 설명_3 : 총금액 70만원이상 ( WHERE 활용)
ㄴ 설명_4 : 오름차순 정렬 (ORDER BY 활용)
ㄴ 실제 쿼리 :
SELECT
USER_ID,
NICKNAME,
TOTAL_SALES
FROM
(SELECT b.USER_ID, b.NICKNAME, SUM(a.PRICE) AS TOTAL_SALES
FROM USED_GOODS_BOARD a LEFT JOIN USED_GOODS_USER b ON a.WRITER_ID = b.USER_ID
WHERE STATUS = 'DONE'
GROUP BY b.USER_ID
) c
WHERE TOTAL_SALES >= 700000
ORDER BY 3 ASC
※ 오랜만에 꽤 난이도가 있는 문제가 나왔다. 조인문을 활용하고 중간중간에 필요한 것들이 많은 문제였다.
- 먼저 () c 괄호안에 있는 쿼리부터 작성을 해야한다. 양쪽 테이블에서 참조할 컬럼은 회원아이디로 각 각 WRITER_ID, USER_ID 이다. 두 컬럼으로 조인을 진행한다.
- 이때 가격(PRICE)을 SUM() 합계를 구하고 예시출력결과처럼 TOTAL_SALES로 이름을 지정해준다.
- 판매가 완료된 (STATUS = 'DONE')의 조건을 추가한다.
- 아이디 기준으로 GROUP BY를 해주지 않으면 전체 데이터가 합쳐지기 때문에 GROUP BY를 해줘야한다.
※ STATUS와 각 회원별로 금액을 구분해야하는 위의 두 줄 작업을 계속 제외하고 생각해서 평소보다 문제풀이가 좀 걸렸었다. 문제를 더 꼼꼼히 읽고 필요한 조건을 잘 체크해야할거같다.
- 중간에 4줄을 완성하고 () c로 감싸고 위에서 조회할 컬럼들을 적어준다.(USER_ID, NICKNAME, TOTAL_SALES)
- TOTAL_SALES는 존재하지 않는 컬럼이기 때문에 이렇게 쿼리를 감싸고 상단에 넣어주면 조건문으로 활용할 수 있다.
- 총 금액 70만원이상의 조건을 걸어야하기 때문에 필요하다. 괄호 밖에서 70만원이상의 조건을 걸어준다.
- 마지막으로 총 결과를 총금액 기준으로 오름차순 정렬해준다.
1-2) 알고리즘 문제 : 삼총사
ㄴ 배열안에 정수 3개를 더했을때 0이되는 경우를 삼총사로 칭하고, 그 개수를 구해야한다.
ㄴ 모든 경우의 수를 체크해야하고 0이 되었을때 카운트를 올린다라는 개념을 생각하고 진행했다.
'부트캠프 TIL' 카테고리의 다른 글
[54] 부트캠프 TIL - 본캠프 36일차 (0) | 2024.10.14 |
---|---|
[53] 부트캠프 TIL - 본캠프 35일차 (6) | 2024.10.11 |
[51] 부트캠프 TIL - 본캠프 33일차 (14) | 2024.10.09 |
[50] 부트캠프 TIL - 본캠프 32일차 (22) | 2024.10.08 |
[49] 부트캠프 TIL - 본캠프 31일차 (4) | 2024.10.07 |