문제
USED_GOODS_BOARD
와 USED_GOODS_USER
테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요. 이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬해주세요.
💡 조건
sql 코드
select user_id, nickname, concat(city," ",street_address1," ",street_address2) "전체주소",
concat(substring(tlno,1,3),"-", substring(tlno,4,4),"-",substring(tlno,8,4)) "전화번호"
from used_goods_user as users join
(SELECT writer_id
FROM used_goods_board
GROUP BY writer_id
HAVING count(*)>=3) as board
on users.user_id = board.writer_id
order by user_id desc
string 문제로 나온걸로봐서 concat 사용할 수 있는지 없는지 보는 문제인거 같아서 다른건 제외하고 select절만 적어둔다.
concat(city," ",street_address1," ",street_address2) "전체주소"
합치는 사이에 공백이 있어서 " "으로 처리해주었는데, space()를 사용해도 된다.
1. 직접 공백 처리
concat(city," ",street_address1," ",street_address2)
2. space() 사용
concat(city,space(1),street_address1,space(1),street_address2)
concat(substring(tlno,1,3),"-", substring(tlno,4,4),"-",substring(tlno,8,4)) "전화번호"
substring으로 숫자 추출해주고 concat으로 묶어주는데 공백 넣었던 것처럼 사이에 하이픈 넣어주면 된다.
(문자열에서는 format 사용하면 안된다ㅎ;; format은 날짜, 시간 형식에 사용)