문제
https://school.programmers.co.kr/learn/courses/30/lessons/164670
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 접근 방식
게시글을 3개 이상 올린 작성자를 찾아서 닉네임, 주소, 연락처를 SELECT 해야한다. 이때, 게시글의 정보와 회원의 정보가 분리되어 있기 때문에 JOIN을 활용해야하며, 주소 및 연락처를 정해진 형식에 맞춰 변형해서 출력해야한다.
1. 게시글을 3개 이상 작성한 회원 조회 -> JOIN 후 GROUP BY, HAVING을 사용
>> JOIN
SELECT ~ FROM user
INNER JOIN board
ON user_id = writer_id
>> GROUP BY, HAVING
GROUP BY user_id
HAVING COUNT(user_id)>=3
2. 주소 및 연락처 출력 변환 -> CONCAT 및 SUBSTR 명령어 사용
>> CONCAT (문자열1, 문자열2, ..., )
>> SUBSTRING(번호,1,3)
코드
SELECT user_id,nickname,
CONCAT(city," ",street_address1," ",street_address2) as 전체주소,
CONCAT(SUBSTR(TLNO,1,3),'-',SUBSTR(TLNO,4,4),'-',SUBSTR(TLNO,8,4))
FROM used_goods_user as user
INNER JOIN used_goods_board as board
ON user_id = writer_id
GROUP BY user_id
HAVING COUNT(user_id)>=3
ORDER BY user_id DESC;
회고
CONCAT 과 SUBSTR 에 대해 알게되었다.
문자열 합치기 = CONCAT(문자열1, 문자열2,...,)
문자열 슬라이스 = SUBSTR( 문자열, 시작위치, 철자 개수)
'문제풀이 > SQL' 카테고리의 다른 글
3월에 태어난 여성 회원 목록 출력하기(SQL) (0) | 2024.04.05 |
---|---|
연도 별 평균 미세먼지 농도 조회하기(SQL) (0) | 2024.03.28 |
없어진 기록 찾기(SQL) 문제풀이 (0) | 2024.03.13 |
있었는데요 없었습니다(프로그래머스) 문제풀이 (0) | 2024.03.12 |
자동차 평균 대여 기간 구하기(SQL) 문제풀이 (0) | 2024.03.07 |