포스트

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

https://school.programmers.co.kr/learn/courses/30/lessons/164670

문제 문제

  • 문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
-- 작성자가 최소 3번 이상 게시물을 작성한 사용자만을 선택하는 서브쿼리와 "USED_GOODS_USER" 테이블을 조인
SELECT USER_ID, 
       NICKNAME, 
       CITY ||' '|| STREET_ADDRESS1 ||' '|| STREET_ADDRESS2 AS "전체주소", 
       SUBSTR(TLNO, 0, 3) ||'-'|| SUBSTR(TLNO, 4, 4) ||'-'|| SUBSTR(TLNO, 8, 4) AS "전화번호"
FROM USED_GOODS_USER U
JOIN (
     SELECT WRITER_ID 
     FROM USED_GOODS_BOARD 
     GROUP BY WRITER_ID 
     HAVING COUNT(*) >= 3) B
ON U.USER_ID = B.WRITER_ID
ORDER BY USER_ID DESC;
1
2
3
4
5
6
7
8
9
10
11
12
SELECT U.USER_ID, 
       U.NICKNAME, 
       U.CITY || ' ' || U.STREET_ADDRESS1 || ' ' || U.STREET_ADDRESS2 AS "전체주소",
       SUBSTR(U.TLNO, 1, 3) || '-' || SUBSTR(U.TLNO, 4, 4) || '-' || SUBSTR(U.TLNO, 8, 4) AS "전화번호"
FROM (
     SELECT WRITER_ID
     FROM USED_GOODS_BOARD
     GROUP BY WRITER_ID
     HAVING COUNT(*) >= 3) B
JOIN USED_GOODS_USER U
ON B.WRITER_ID = U.USER_ID
ORDER BY U.USER_ID DESC;


  • SUBSTR 함수는 데이터베이스에서 문자열을 조작하는 데 사용되는 함수 중 하나로, 주어진 문자열에서 특정 위치에서 시작하여 지정된 길이만큼의 문자열을 추출한다. 오라클에서의 SUBSTR 함수는 다음과 같은 형식을 가진다.

    1
    
      SUBSTR(char, position, substring_length)
    
    • char: 추출할 문자열이나 열이다.
    • position: 추출을 시작할 위치를 나타내는 매개변수로, 문자열의 첫 번째 문자가 1부터 시작한다.
    • substring_length(선택 사항): 추출하고자 하는 문자열의 길이를 나타내는 매개변수이다. 이 값을 생략하면 start 위치부터 문자열 끝까지 추출된다.
      1. SUBSTR('Hello, World!', 1, 5)는 문자열의 첫 다섯 문자인 “Hello”를 반환한다.
      2. SUBSTR('Hello, World!', 7)는 문자열의 7번 위치부터 끝까지 추출하여 “World!”를 반환한다.
      3. SUBSTR('Hello, World!', -6)은 문자열의 마지막 6개 문자를 추출하여 “World!”를 반환한다.


    • 예를 들어, ‘ABCDEFG’ 문자열에서 중간에 있는 ‘CD’ 부분을 추출하고 싶을 경우:

      1
      
        SELECT SUBSTR('ABCDEFG', 3, 2) FROM dual;
      
      • 이 쿼리는 ‘ABCDEFG’ 문자열에서 3번째 위치부터 시작하여 2자리를 추출하므로 ‘CD’를 반환한다. dual은 오라클에서 단일 행과 단일 열을 갖는 가상의 테이블로, 단순한 쿼리 테스트에 사용된다.
      • 즉, SUBSTR 함수는 문자열을 자르거나 추출할 때 활용되며, positionsubstring_length 매개변수를 조절하여 필요한 부분을 정확하게 추출할 수 있다.


  • 자바에서의 문자열 연결은 + 연산자를 사용하지만, SQL에서는 문자열을 연결할 때 || 연산자를 사용한다. SQL에서 +를 사용하는 경우는 주로 숫자와 문자열을 함께 사용할 때이다. 하지만 문자열 간의 연결에는 ||를 사용해야 한다.


  • 실행 결과

실행 결과

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.