1. 조건에 맞는 사용자 정보 조회하기
🅰️풀이과정
# SELECT: USER_ID, NICKNAME
- CONCAT 함수로 전체주소의 형식을 만들어준다. (CITY, STREET_ADDRESS1,2를 붙여줌)
- 중간에 " "공백을 삽입해주어 가독성을 높인다.
- CONCAT과 SUBSTRING함수로 전화번호 형식을 만들어준다. 1~3까지 절단 후 하이픈(-) 삽입, 4번째에서 4글자 불러오고 하이픈 삽입. 마지막 자리 모두 불러오기
#FROM절: JOIN함수로 USER_ID와 WRITER_ID를 연결한다.
#GROUP BY: USER_ID기준으로 정렬. 같은 사람이 몇 번 거래했는지 알아야 하므로
#HAVING 절로 WRITER_ID가 세번 언급된 사람을 찾는다.
SELECT U.USER_ID,
U.NICKNAME,
CONCAT(U.CITY, ' ', U.STREET_ADDRESS1, ' ', U.STREET_ADDRESS2) AS 전체주소,
CONCAT(SUBSTRING(U.TLNO, 1, 3), '-', SUBSTRING(U.TLNO, 4, 4), '-', SUBSTRING(U.TLNO, 8)) AS 전화번호
FROM USED_GOODS_USER AS U
JOIN USED_GOODS_BOARD AS B ON U.USER_ID = B.WRITER_ID
GROUP BY 1
HAVING COUNT(B.WRITER_ID) >= 3
ORDER BY 1 DESC;
2. 조건에 부합하는 중고거래 상태 조회하기
🅰️풀이방법
#SELECT: BOARD_ID, WRITER_ID, TITLE, PRICE
STATUS값은 CASE WHEN으로 상태별로 구분해야 함.
#WHERE: 2022년 10월 5일에 등록된 거래 내역이 필요하기 때문에 CREATED_DATE가 2022-10-05 항목에 조건을 걸어준다.
SELECT BOARD_ID,
WRITER_ID,
TITLE,
PRICE,
CASE WHEN STATUS = 'SALE' THEN '판매중'
WHEN STATUS = 'RESERVED' THEN '예약중'
WHEN STATUS = 'DONE' THEN '거래완료' END STATUS
FROM USED_GOODS_BOARD
WHERE CREATED_DATE = '2022-10-05'
ORDER BY BOARD_ID DESC;
3. 취소되지 않은 진료 예약 조회하기
🅰️문제풀이
# 출력할 값: 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시
# 세 개의 테이블이 주어졌기 때문에 JOIN을 사용해서 서로 이어준다. (해당 문제에서 가장 중요한 것)
# FROM절: DOCTOR테이블과 APPOINTMENT 테이블은 DR_ID와 MDDR_ID를 통해 연결해주고, PATIENT와 APPOINTMENT 테이블을 PT_NO을 통해서 이어준다.
#WHERE절: 예약취소가 안된 사람이므로 APNT_CNCL_YMD 컬럼이 NULL이어야 한다.
또한 흉부외과 조회를 위해 MDCP_CD = 'CD' 가 되어야 한다.
마지막으로 APNT_YMD는 2022-04-13과 일치하는 값을 불러온다.
#ORDER BY: APNT_YMD 기준으로 정렬한다.
SELECT A.APNT_NO,
P.PT_NAME,
P.PT_NO,
D.MCDP_CD,
D.DR_NAME,
A.APNT_YMD
FROM APPOINTMENT AS A
JOIN DOCTOR AS D ON D.DR_ID = A.MDDR_ID
JOIN PATIENT AS P ON P.PT_NO = A.PT_NO
WHERE A.APNT_CNCL_YMD IS NULL AND A.MCDP_CD = 'CS' AND A.APNT_YMD LIKE '2022-04-13%'
ORDER BY A.APNT_YMD
오늘은 뭔가 파이썬을 따라가기에 급급한 날이었던 것 같다.
내일부터는 파이썬 알고리즘도 함께 진행하려고 하는데 조금 더 익숙해지길 바래본다....🤮
'DATA > SQL' 카테고리의 다른 글
SQL: Leet code 문제풀이(570, 1934, 620) (0) | 2025.01.23 |
---|---|
SQL풀이: Leetcode 1661. Average Time of Process per Machine (0) | 2025.01.15 |
SQL: LAG 함수 활용하여 현재 데이터와 이전 데이터를 비교 (1) | 2025.01.09 |
SQL 코드카타 풀이(없어진 기록 찾기, 과일로 만든 아이스크림 고르기, 재구매가 일어난 상품과 회원 구하기) (1) | 2024.12.10 |