728x90
https://school.programmers.co.kr/learn/courses/30/lessons/164670
두 테이블이 존재할 때 하나의 조건을 따져 결과물을 내놓고 그 값과 WHERE 조건으로 맞추면 되는 문제이다. 먼저 USED_GOODS_BOARD 테이블에서 아이디로 그룹화하여 각 아이디가 몇개 있는지 확인하고 HAVING 구문으로 아이디의 개수가 3이상인 것만 남긴다. 그리고 WHERE와 IN 구문을 사용하여 원하는 정보를 가져온다.
그러나 이 문제의 핵심은 CONCAT, SUBSTR 함수 쓸 줄 아느냐였다.
난 SQLD 자격증 보유자이므로 당연히 이 내용을 배웠지만! 까먹었기 때문에 다시 정리한다.
CONCAT은 문자열을 이어붙이는 함수로 SELECT 했을 때 원하는 형태로 값을 출력하기 위해 많이 사용한다.
str1 = "ABC"
str2= "DEF"
CONCAT(str1, str2) = "ABCDEF"
SUBSTR 은 문자열을 자를때 사용한다.
str = "ABCDE"
SUB(str, 1, 3) = "ABC"
-> 1번째 문자부터 길이 3을 나타낸다. 즉 A부터 길이가 3이 되도록 하면 ABC
01012345678 이것을 010-1234-5678 로 나타내고 싶다면
num = 01012345678
CONCAT(SUBSTR(num, 1, 3) , '-', SUBSTR(num, 4, 4) , '-',SUBSTR(num, 8, 4)) = 010-1234-5678
-- 코드를 입력하세요
SELECT USER_ID, NICKNAME, CONCAT(CITY, ' ', STREET_ADDRESS1, ' ',STREET_ADDRESS2) AS 전체주소,
CONCAT(SUBSTR(TLNO, 1, 3), '-', SUBSTR(TLNO, 4, 4), '-', SUBSTR(TLNO, 8, 4)) AS 전화번호
FROM USED_GOODS_USER
WHERE USER_ID IN (
SELECT WRITER_ID
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING COUNT(WRITER_ID) >= 3
)
ORDER BY USER_ID DESC;
'프로그래머스 풀이 > Lv 3' 카테고리의 다른 글
[프로그래머스SQL] 부서별 평균 연봉 조회하기 (0) | 2024.10.07 |
---|---|
[프로그래머스 SQL] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2024.10.02 |
[프로그래머스Lv3] 단속카메라 (Java) (0) | 2024.09.30 |
[프로그래머스 SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 (1) | 2024.09.30 |
[프로그래머스 SQL] 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2024.09.30 |