[TIL] [2025/03/17]

chohxr·2025년 3월 17일

환절기라 그런가 비염인지 감기인지... 하루 내내 코 푸니까 머리도 아프고 힘드네요ㅠㅠ
다들 비타민 잘 챙겨드세요!

오늘은 SQL 코딩테스트 문제들을 쫌 풀어봤습니다!
문제를 풀어보니까 더 실력이 느는 것 같아서 이번 주는 SQL 문제 50개를 푸는걸 목표로 잡았습니다.



SQL Query 정리

1.중복 구매 내역 조회

ONLINE_SALE 테이블에서 동일한 USER_ID가 동일한 PRODUCT_ID를 두 번 이상 구매한 내역을 조회하는 쿼리

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID, PRODUCT_ID DESC;

USER_IDRODUCT_ID로 그룹화하여 각 조합의 개수를 계산하는 게 포인트!!!

서브쿼리로 짤까, 뭘로 짜면 좋을까 고민을 쫌 했던 문제
꼭 기억해 두기!!



2. 중고 거래 게시글 작성자 정보 조회

USED_GOODS_BOARD 테이블과 USED_GOODS_USER 테이블을 조인하여, USED_GOODS_BOARD에 게시글을 3개 이상 작성한 사용자의 정보를 조회하는 쿼리

SELECT B.WRITER_ID USER_ID,
       G.NICKNAME,
       CONCAT(G.CITY, " ", G.STREET_ADDRESS1, " ", G.STREET_ADDRESS2) AS "전체주소",
       CONCAT(SUBSTR(G.TLNO,1,3), '-', SUBSTR(G.TLNO,4,4), '-', SUBSTR(G.TLNO,8,4)) AS "전화번호"
FROM USED_GOODS_BOARD B
INNER JOIN USED_GOODS_USER G ON B.WRITER_ID = G.USER_ID
GROUP BY B.WRITER_ID
HAVING COUNT(*) >= 3
ORDER BY B.WRITER_ID DESC;

접근이 어려웠다기 보다는 전화번호를 "XXX-XXXX-XXXX" 형식으로 변환하고, 연결 시키기 위한 함수를 써야하는데, 사용 방법이 바로 떠오르지 않았다.


CONCAT과 SUBSTR 정리

(1) CONCAT (문자열 연결)
여러 문자열을 하나로 합치는 함수

CONCAT(문자열1, 문자열2, ...)
SELECT CONCAT('Hello', ' ', 'World') AS result;
# 결과
Hello World

(2)SUBSTR (문자열 자르기)
문자열에서 특정 위치부터 지정한 길이만큼 추출하는 함수.

SUBSTR(문자열, 시작위치, 길이)

# 길이를 생략하면 끝까지 추출
SELECT SUBSTR('HelloWorld', 1, 5) AS result;
# 결과
Hello
profile
조혜령 Today I Learn

3개의 댓글

comment-user-thumbnail
2025년 3월 17일

건강이 최고다!🥲

답글 달기
comment-user-thumbnail
2025년 3월 18일

아푸지마요...(저도 콧물질질

답글 달기
comment-user-thumbnail
2025년 3월 18일

건강챙기기 😭🤍🤍🤍

답글 달기