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

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/164670

정답 코드:

SELECT
    u.USER_ID,
    u.NICKNAME,
    CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) AS "전체주소",
    CONCAT(SUBSTRING(TLNO, 1, 3), '-',  
           SUBSTRING(TLNO, 4, 4), '-', 
           SUBSTRING(TLNO, 8, 4)) AS "전화번호"
FROM USED_GOODS_USER u
INNER JOIN(
    SELECT 
        WRITER_ID,
        COUNT(*) AS post_count
    FROM USED_GOODS_BOARD
    GROUP BY WRITER_ID
    HAVING COUNT(*) >= 3) AS board_cnt
on board_cnt.WRITER_ID = u.USER_ID
ORDER BY u.USER_ID DESC;

문제 풀이때 했던 생각.

# 중고 거래 게시물을 3건 이상 등록한 사용자 -> USED_GOODS_BOARD  
# 사용자 ID, 닉네임, 전체주소, 전화번호
# 전체 주소는 시, 도로명 주소, 상세 주소가 함께 출력
# 전화번호의 경우 xxx-xxxx-xxxx 같은 형태로 하이픈 문자열(-)을 삽입하여 출력 -> USED_GOODS_USER 
# 결과는 회원 ID를 기준으로 내림차순


1. 사용자별 게시글 개수 계산
SELECT WRITER_ID,
       COUNT(*) AS post_count
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING post_count >= 3

2.  결과를 사용자 테이블과 결합 (FROM 서브쿼리 + JOIN)

 


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

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/164672

정답 코드:

SELECT
    BOARD_ID,
    WRITER_ID,
    TITLE,
    PRICE,
    CASE
        WHEN STATUS = 'SALE' THEN '판매중'
        WHEN STATUS = 'RESERVED' THEN '예약중'
        WHEN STATUS = 'DONE' THEN '거래완료'
    END AS STATUS
FROM USED_GOODS_BOARD 
WHERE CREATED_DATE = "2022-10-05"
ORDER BY BOARD_ID DESC

문제 풀이때 했던 생각.

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

 


58. 취소되지 않은 진료 예약 조회하기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/132204

정답 코드:

SELECT
    A.APNT_NO,
    P.PT_NAME,
    P.PT_NO,
    A.MCDP_CD,
    D.DR_NAME,
    A.APNT_YMD
FROM APPOINTMENT A
INNER JOIN PATIENT P
    ON A.PT_NO = P.PT_NO
INNER JOIN DOCTOR D
    ON A.MDDR_ID = D.DR_ID
WHERE A.APNT_CNCL_YN = "N" AND A.APNT_YMD LIKE '2022-04-13%'
ORDER BY A.APNT_YMD ASC

문제 풀이때 했던 생각.

# PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회
# 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성
# 진료예약일시를 기준으로 오름차순 정렬

# 취소되지 않은 흉부외과(CS) 진료 예약 내역
SELECT APNT_NO, APNT_CNCL_YN # Y가 취소 N이 신청
FROM APPOINTMENT 
WHERE APNT_CNCL_YN = "Y"

JOIN 조건
APPOINTMENT.PT_NO=PATIENT.PT_NO
APPOINTMENT.MDDR_ID = DOCTOR.DR_ID

 


 

+ Recent posts