dev/db

[SQL] 조건에 맞는 사용자 정보 조회하기

캄춰 2023. 10. 18. 14:20
728x90
반응형

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

728x90
반응형