문제

1. 조건에 부합하는 중고거래 댓글 조회하기

‘USED_GOODS_BOARD’와 ‘USED_GOODS_REPLY’ 테이블에서 2022년 10월에 작성된 게시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요. 결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬해주세요.

1
2
3
4
SELECT TITLE, A.BOARD_ID, REPLY_ID, B.WRITER_ID, B.CONTENTS, TO_CHAR(B.CREATED_DATE, 'yyyy-mm-dd') AS CREATED_DATE
FROM USED_GOODS_BOARD A, USED_GOODS_REPLY B
WHERE A.BOARD_ID = B.BOARD_ID AND EXTRACT(MONTH FROM A.CREATED_DATE) = 10
ORDER BY B.CREATED_DATE, TITLE

2. 조건에 부합하는 중고거래 상태 조회하기

USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.

1
2
3
4
5
6
7
8
9
10
11
12
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
    CASE STATUS
        WHEN 'SALE'
            THEN '판매중'
        WHEN 'RESERVED'
            THEN '예약중'
        ELSE '거래완료'
        END
    AS STATUS
FROM USED_GOODS_BOARD
WHERE TO_CHAR(CREATED_DATE, 'yyyy-mm-dd') = '2022-10-05'
ORDER BY BOARD_ID DESC

3. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기

USED_GOODS_BOARDUSED_GOODS_FILE 테이블에서 조회수가 가장 높은 중고거래 게시물에 대한 첨부파일 경로를 조회하는 SQL문을 작성해주세요. 첨부파일 경로는 FILE ID를 기준으로 내림차순 정렬해주세요. 기본적인 파일경로는 /home/grep/src/ 이며, 게시글 ID를 기준으로 디렉토리가 구분되고, 파일이름은 파일 ID, 파일 이름, 파일 확장자로 구성되도록 출력해주세요. 조회수가 가장 높은 게시물은 하나만 존재합니다.

1
2
3
4
5
6
7
8
9
10
11
12
SELECT '/home/grep/src/'\||F.BOARD\_ID\||'/'\||FILE\_ID\||FILE\_NAME\||FILE\_EXT AS FILE\_PATH
FROM USED_GOODS_FILE F
JOIN (
    SELECT BOARD_ID
    FROM (
        SELECT BOARD_ID
        FROM USED_GOODS_BOARD
        ORDER BY VIEWS DESC
    )
    WHERE ROWNUM <= 1
) B ON F.BOARD_ID = B.BOARD_ID
ORDER BY FILE_ID DESC;

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

USED_GOODS_BOARDUSED_GOODS_USER 테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID, 닉네임, 전체주소, 전화번호를 조회하는 SQL문을 작성해주세요. 이때, 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력되도록 해주시고, 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력해주세요. 결과는 회원 ID를 기준으로 내림차순 정렬해주세요.

1
2
3
4
5
6
7
8
9
10
SELECT USER_ID, NICKNAME,
    CITY\||' '\||STREET\_ADDRESS1\||' '\||STREET\_ADDRESS2 AS 전체주소,
    REGEXP_REPLACE(TLNO, '(.{3})(.{4})(.{3})', '\1-\2-\3') 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;

5. 조건에 맞는 사용자와 총 거래금액 조회하기

USED_GOODS_BOARDUSED_GOODS_USER 테이블에서 완료된 중고 거래의 총금액이 70만 원 이상인 사람의 회원 ID, 닉네임, 총거래금액을 조회하는 SQL문을 작성해주세요. 결과는 총거래금액을 기준으로 오름차순 정렬해주세요.

1
2
3
4
5
6
7
8
9
10
SELECT USER_ID, NICKNAME, TOTAL_SALES
FROM USED_GOODS_USER
INNER JOIN (
    SELECT WRITER_ID, SUM(PRICE) AS TOTAL_SALES
    FROM USED_GOODS_BOARD
    WHERE STATUS = 'DONE'
    GROUP BY WRITER_ID
    HAVING SUM(PRICE) >= 700000)
    ON WRITER_ID = USER_ID
ORDER BY TOTAL_SALES;