728x90
반응형
SMALL
안녕하세요! 오늘은 프로그래머스의 SQL 코딩 테스트 연습문제 중 조건에 맞는 사용자 정보 조회하기 문제를 풀어보았습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/164670
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
중고 상품을 3개 이상 등록한 사용자에 대한 사용자 정보를 검색하는 문제입니다.
정답으로 인정된 SQL 쿼리는 다음과 같습니다.
SELECT ugu.USER_ID, ugu.NICKNAME, ugu.CITY || ' ' || ugu.STREET_ADDRESS1 || ' ' || ugu.STREET_ADDRESS2 AS FULL_ADDRESS, SUBSTR(ugu.TLNO, 1, 3) || '-' || SUBSTR(ugu.TLNO, 4, 4) || '-' || SUBSTR(ugu.TLNO, 8) AS PHONE_NUMBER
FROM USED_GOODS_BOARD ugb
JOIN USED_GOODS_USER ugu ON ugu.USER_ID = ugb.WRITER_ID
GROUP BY ugu.USER_ID, ugu.NICKNAME, ugu.CITY, ugu.STREET_ADDRESS1, ugu.STREET_ADDRESS2, ugu.TLNO
HAVING COUNT(ugb.BOARD_ID) >= 3
ORDER BY ugu.USER_ID DESC;
쿼리를 분석해 보겠습니다.
- USED_GOODS_USER 테이블에서 검색하려는 열(USER_ID, NICKNAME, CITY, STREET_ADDRESS1, STREET_ADDRESS2 및 TLNO 포함)을 선택하는 것으로 시작합니다.
- 그런 다음 연결 연산자 | |를 사용하여 CITY, STREET_ADDRESS1 및 STREET_ADDRESS2 열을 연결하여 FULL_ADDRESS 열을 형성합니다.
- 또한 SUBSTR 함수를 사용하여 하이픈이 포함된 전화번호 형식으로 TLNO 열의 형식을 지정합니다.
- 그런 다음 JOIN 문을 사용하여 USED_GOODS_BOARD 테이블을 USER_ID 및 WRITER_ID 열의 USED_GOODS_USER 테이블과 각각 조인합니다.
- 그런 다음 GROUP BY 절을 사용하여 USER_ID, NICKNAME, CITY, STREET_ADDRESS1, STREET_ADDRESS2 및 TLNO를 기준으로 결과를 그룹화합니다.
- 각 사용자에 대한 BOARD_ID 값의 수를 세는 COUNT 함수와 3개 이상의 목록 조건을 지정하는 >=를 사용하여 목록이 3개 미만인 사용자를 필터링하기 위해 HAVING 절을 추가합니다.
- 마지막으로 ORDER BY 절을 사용하여 USER_ID 별로 결과를 내림차순으로 정렬합니다.

728x90
반응형
LIST
'SQL' 카테고리의 다른 글
[프로그래머스 | SQL] 특정 옵션이 포함된 자동차 리스트 구하기 문제 풀이 (Oracle) (0) | 2023.06.15 |
---|---|
[프로그래머스 | SQL] 조건에 맞는 사용자와 총 거래금액 조회하기 문제 풀이 (Oracle) (0) | 2023.06.14 |
[프로그래머스 | SQL] 조회 수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 해석 (Oracle) (0) | 2023.06.12 |
데이터베이스, DBMS, 테이블 및 SQL에 대한 전반적인 모든 것! (1) | 2023.06.11 |
[프로그래머스 | SQL] 조건에 부합하는 중고거래 상태 조회하기 코드 풀이 (Oracle) (0) | 2023.06.10 |