MySQL - 프로그래머스 레벨 : 2(4) - ORDER BY '정답률'

먹보·2022년 12월 13일
0
post-thumbnail

1. 3월에 태어난 여성 회원 목록 출력하기

테이블 설명 : 다음은 식당 리뷰 사이트의 회원 정보를 담은 MEMBER_PROFILE 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.

문제 설명 : MEMBER_PROFILE 테이블에서 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회하는 SQL문을 작성해주세요. 이때 전화번호가 NULL인 경우는 출력대상에서 제외시켜 주시고, 결과는 회원ID를 기준으로 오름차순 정렬해주세요.

SELECT
MEMBER_ID,
MEMBER_NAME,
GENDER,
DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM MEMBER_PROFILE
WHERE DATE_OF_BIRTH LIKE '%03%' AND TLNO IS NOT NULL AND GENDER = 'W'
ORDER BY MEMBER_ID ASC

🗒️코멘트 : NULL

2. 진료과별 총 예약 횟수 출력하기

테이블 설명 : 다음은 종합병원의 진료 예약정보를 담은 APPOINTMENT 테이블 입니다.
APPOINTMENT 테이블은 다음과 같으며 APNT_YMD, APNT_NO, PT_NO, MCDP_CD, MDDR_ID, APNT_CNCL_YN, APNT_CNCL_YMD는 각각 진료예약일시, 진료예약번호, 환자번호, 진료과코드, 의사ID, 예약취소여부, 예약취소날짜를 나타냅니다.

문제 설명 : APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.

SELECT
MCDP_CD AS '진료과코드',
COUNT(APNT_NO) AS '5월예약건수'
FROM APPOINTMENT
WHERE MONTH(APNT_YMD) = 5
GROUP BY MCDP_CD
ORDER BY 5월예약건수 ASC, MCDP_CD ASC

🗒️코멘트 : 위에 1번 문제를 풀으며 특정 '월'에 해당하는 자료를 '일'에 겹칠 수가 있어서 저렇게 찾을수 없다는 한계를 뒤 늦게 깨달아 찾아보았는데 DATE_FORMAT일 경우 MONTH, DAY 같은 문법이 있다는 것을 꺠달았다.

3. 상품 별 오프라인 매출 구하기

테이블 설명 : 다음은 어느 의류 쇼핑몰에서 판매중인 상품들의 상품 정보를 담은 PRODUCT 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블 입니다. PRODUCT 테이블은 아래와 같은 구조로 PRODUCT_ID, PRODUCT_CODE, PRICE는 각각 상품 ID, 상품코드, 판매가를 나타냅니다. 상품 별로 중복되지 않는 8자리 상품코드 값을 가지며, 앞 2자리는 카테고리 코드를 의미합니다.

OFFLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 OFFLINE_SALE_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 오프라인 상품 판매 ID, 상품 ID, 판매량, 판매일을 나타냅니다.

문제 설명 : PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.

SELECT
P.PRODUCT_CODE,
P.PRICE*SUM(S.SALES_AMOUNT) AS SALES
FROM PRODUCT P
JOIN OFFLINE_SALE S ON P.PRODUCT_ID = S.PRODUCT_ID
GROUP BY S.PRODUCT_ID
ORDER BY SALES DESC, P.PRODUCT_CODE ASC

🗒️코멘트 : 총 매출액을 구해보는 문제 한 번쯤은 해보고 싶었는데..드디어 해본다!! API를 만들면서 JOIN을 많이 써보긴 했지만 프로그래머스에서 JOIN을 써보긴 처음 역시 재밌다!

📌총평 :

재밌어 재밌어~

profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글