Programmers / MySQL / Lv.3
SELECT U.USER_ID AS USER_ID,
U.NICKNAME AS NICKNAME,
CONCAT_WS(' ', U.CITY, U.STREET_ADDRESS1, U.STREET_ADDRESS2) AS '전체주소',
CONCAT_WS('-', SUBSTRING(U.TLNO FROM 1 FOR 3),
SUBSTRING(U.TLNO FROM 4 FOR 4),
SUBSTRING(U.TLNO FROM 8)) AS '전화번호'
FROM USED_GOODS_USER AS U
INNER JOIN USED_GOODS_BOARD AS B
ON U.USER_ID = B.WRITER_ID
GROUP BY B.WRITER_ID
HAVING COUNT(B.WRITER_ID) >= 3
ORDER BY U.USER_ID DESC;
1. CONCAT_WS( 중간에 넣을 문장, 문장1, 문장2, 문장3, ... )
: 중간에 넣을 문장에 " !!! " 이렇게 느낌표 3개를 넣으면,
: 문장1 !!! 문장2 !!! 문장3 이렇게 출력된다.
2. SUBSTRING( 컬럼명, 시작 위치 FROM 개수 )
: 시작 위치가 '0' 부터가 아닌 '1'부터 시작한다.
: SUBSTR( 컬럼명, 시작위치, 개수 ) 라는 더 간결한 방법이 있지만... 그때 그때마다 다르게 사용하게 되는것 같다
[해석]
SELECT U.USER_ID AS USER_ID,
U.NICKNAME AS NICKNAME,
CONCAT_WS(' ', U.CITY, U.STREET_ADDRESS1, U.STREET_ADDRESS2) AS '전체주소',
CONCAT_WS('-', SUBSTRING(U.TLNO FROM 1 FOR 3),
SUBSTRING(U.TLNO FROM 4 FOR 4),
SUBSTRING(U.TLNO FROM 8)) AS '전화번호'
: 전화번호 사이에 '-' 하이픈을 넣기 위함
FROM USED_GOODS_USER AS U
INNER JOIN USED_GOODS_BOARD AS B
ON U.USER_ID = B.WRITER_ID
GROUP BY B.WRITER_ID
: 판매를 한 사용자들의 그룹이기 때문에 WRITER_ID로 묶어 주었다.
HAVING COUNT(B.WRITER_ID) >= 3
ORDER BY U.USER_ID DESC;
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/164670
'dev > db' 카테고리의 다른 글
[SQL] 기초 명령어 정리 (0) | 2023.11.20 |
---|---|
[SQL] 없어진 기록 찾기 (0) | 2023.10.16 |
[DB] h2 database 실행 방법 (0) | 2023.10.13 |
[SQL] 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2023.10.12 |
[SQL] 즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2023.10.12 |