
환절기라 그런가 비염인지 감기인지... 하루 내내 코 푸니까 머리도 아프고 힘드네요ㅠㅠ
다들 비타민 잘 챙겨드세요!
오늘은 SQL 코딩테스트 문제들을 쫌 풀어봤습니다!
문제를 풀어보니까 더 실력이 느는 것 같아서 이번 주는 SQL 문제 50개를 푸는걸 목표로 잡았습니다.
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_ID와 RODUCT_ID로 그룹화하여 각 조합의 개수를 계산하는 게 포인트!!!
서브쿼리로 짤까, 뭘로 짜면 좋을까 고민을 쫌 했던 문제
꼭 기억해 두기!!
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" 형식으로 변환하고, 연결 시키기 위한 함수를 써야하는데, 사용 방법이 바로 떠오르지 않았다.
(1) CONCAT (문자열 연결)
여러 문자열을 하나로 합치는 함수
CONCAT(문자열1, 문자열2, ...)
SELECT CONCAT('Hello', ' ', 'World') AS result;
# 결과
Hello World
(2)SUBSTR (문자열 자르기)
문자열에서 특정 위치부터 지정한 길이만큼 추출하는 함수.
SUBSTR(문자열, 시작위치, 길이)
# 길이를 생략하면 끝까지 추출
SELECT SUBSTR('HelloWorld', 1, 5) AS result;
# 결과
Hello
건강이 최고다!🥲