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

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

정답 코드:

SELECT
    uu.USER_ID,
    uu.NICKNAME,
    SUM(ub.PRICE) AS TOTAL_SALES
FROM USED_GOODS_USER uu
INNER JOIN USED_GOODS_BOARD ub
    ON ub.WRITER_ID = uu.USER_ID
WHERE STATUS = 'DONE'
GROUP BY uu.USER_ID
HAVING SUM(ub.PRICE) >= 700000
ORDER BY TOTAL_SALES ASC

 

문제 풀이때 했던 생각.

조건1. 완료된 중고 거래
조건2. 총거래금액이 70만원 이상
출력이 필요한 값: 회원 ID, 닉네임, 총거래금액
결과는 총거래금액을 기준으로 오름차순 정렬

서로 다른 테이블에 필요한 컬럼이 있기 때문에 테이블 join 필요
(INNER JOIN: 거래 기록이 존재하는 회원만 대상이기 때문에 INNER JOIN 사용)

 


44. 가격대 별 상품 개수 구하기

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

정답 코드:

SELECT
    FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP,
    COUNT(*) AS PRODUCTS
FROM product
GROUP BY FLOOR(PRICE / 10000) * 10000
ORDER BY PRICE_GROUP;

 

문제 풀이때 했던 생각.

만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문
CASE WHEN으로 문제를 접근
가격대 정보는 각 구간별로 나눠서 CASE문 작성

 

## 오답
SELECT
        CASE
            WHEN PRICE < 10000 THEN 0
            WHEN PRICE >= 10000 AND PRICE < 20000 THEN 10000
            WHEN PRICE >= 20000 AND PRICE < 30000 THEN 20000
            WHEN PRICE >= 30000 AND PRICE < 40000 THEN 30000
            WHEN PRICE >= 40000 AND PRICE < 50000 THEN 40000
        END AS PRICE_GROUP,
        COUNT(*) AS PRODUCTS
FROM PRODUCT 
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP;


무엇이 잘못되었나?

가격의최대 구간이 존재하지 않아서 끊임없이 case문을 작성해야함.


해결법

검색을 통해 수학 함수(FLOOR)를 발견 및 시행

FLOOR란?  소수점을 무조건 버리고 정수로 내림하는 함수
ROUND는 반올림이기 때문에 사용 불가능

45.3월에 태어난 여성 회원 목록 출력하기

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

정답 코드:

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

 

문제 풀이때 했던 생각.

생일이 3월인 여성 회원
조건1 생일이 3월
조건2 여성 회원
조건3  전화번호가 NULL인 경우는 출력대상에서 제외

출력값 ID, 이름, 성별, 생년월일
회원ID를 기준으로 오름차순 정렬

 


 

 

+ Recent posts