⭐⭐
APPOINTMENT 테이블에서
-- 코드를 입력하세요
SELECT MCDP_CD AS '진료과코드', COUNT(*) AS '5월예약건수'
FROM APPOINTMENT
WHERE APNT_YMD BETWEEN '2022-05-01' AND '2022-05-31'
GROUP BY MCDP_CD
ORDER BY COUNT(*), MCDP_CD;
WHERE
절에서 5월에 예약한 환자를 필터링합니다.
SELECT
절에서는 문제에서 주어진 열 이름 조건에 맞게 작성합니다.
진료과코드별로 조회하는 것이므로 GROUP BY
절을 사용합니다.
ORDER BY
절에서는 설정한 열 이름이 아닌 원래 열 이름 또는 함수 식을 사용하여 구성해야 합니다. 저는 이 부분을 몰라서 처음에 ORDER BY '5월예약건수', '진료과코드'
라고 기입해서 틀렸었습니다.
⭐⭐
-- 코드를 입력하세요
SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER) AS 'TOTAL_ORDER'
FROM FIRST_HALF F JOIN ICECREAM_INFO I ON F.FLAVOR = I.FLAVOR
GROUP BY I.INGREDIENT_TYPE
ORDER BY SUM(F.TOTAL_ORDER)
성분 타입별 총 주문량이 궁금한 것이기 때문에 GROUP BY
절에서 INGREDIENT_TYPE로 그룹화합니다.
⭐⭐⭐
-- 코드를 입력하세요
SELECT B.CATEGORY, SUM(S.SALES) AS 'TOTAL_SALES'
FROM BOOK_SALES S JOIN BOOK B ON S.BOOK_ID = B.BOOK_ID
WHERE S.SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'
GROUP BY B.CATEGORY
ORDER BY B.CATEGORY;
WHERE
절에서 1월에 판매된 도서를 필터링합니다.
GROUP BY
절에서 카테고리별로 그룹화합니다.
또한 SUM
함수를 활용해 총 판매량을 구하고 ORDER BY
절에서 카테고리를 기준으로 정렬합니다.
⭐⭐⭐
USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서
-- 코드를 입력하세요
WITH USERID AS (
SELECT WRITER_ID
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING COUNT(*)>=3
)
SELECT USER_ID, NICKNAME,
CONCAT(CITY, ' ', STREET_ADDRESS1, ' ', STREET_ADDRESS2) AS '전체주소',
CONCAT(LEFT(TLNO,3), '-', SUBSTR(TLNO,4,4), '-', RIGHT(TLNO,4)) as '전화번호'
FROM USED_GOODS_USER
WHERE USER_ID IN (SELECT * FROM USERID)
ORDER BY USER_ID DESC;
WITH
절에서 게시물을 3건 이상 등록한 사용자 ID를 추출합니다.
CONCAT
함수를 사용하여 전체주소와 전화번호를 문제 조건에 맞게 작성합니다.
먼저, 전체주소는 시, 도로명 주소, 상세 주소를 띄어쓰기 단위로 합쳐줍니다.
다음으로 전화번호는 'xxx-xxxx-xxxx'형식이므로 3글자 뒤에 '-' 삽입, 4번째 글자부터 4글자 뒤에 '-' 삽입, 마지막 4글자 출력이므로 LEFT
, SUBSTR
, RIGHT
함수를 사용하여 구성합니다.
저는 전화번호에서 막혀서 답안을 참고하여 쿼리를 구성하였답니다..!
⭐⭐
USED_GOODS_BOARD 테이블에서
-- 코드를 입력하세요
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
CASE WHEN STATUS = 'SALE' THEN '판매중'
WHEN STATUS = 'RESERVED' THEN '예약중'
ELSE '거래완료' END AS 'STATUS'
FROM USED_GOODS_BOARD
WHERE CREATED_DATE = '2022-10-05'
ORDER BY BOARD_ID DESC;
WHERE
절에서 10월 5일에 작성된 게시물을 필터링합니다.
또한 CASE
문을 사용하여 조건에 맞게 STATUS가 출력되도록 합니다.