happy coding

[programmers] 가격대 별 상품 개수 구하기 본문

self study/Database

[programmers] 가격대 별 상품 개수 구하기

yeoonii 2023. 8. 14. 15:17
SELECT (
    CASE
        WHEN PRICE < 10000 THEN 0
    ELSE TRUNCATE(PRICE,-4)
    END) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP;

아래는 지피티에게 물어본 결과.

  1. TRUNCATE 함수는 MySQL에서는 실수 형태의 데이터를 다룰 때 소수점 이하 자릿수를 제한하여 표시하는 함수입니다. TRUNCATE(PRICE, -4)에서 -4는 소수점 이하 네 자릿수까지 표시하도록 하는 것을 의미하지만, PRICE가 숫자 형태인지, 어떤 타입인지에 대한 정보가 없습니다.
  2. CASE 문에서 두 번째 조건에 ELSE 절이 없어서 해당 조건을 만족하지 않을 때 어떤 값을 반환해야 하는지 지정되어 있지 않습니다.
  3. 가격 그룹을 생성할 때 CASE 문 안에서 TRUNCATE 함수를 사용하는 것은 일반적으로 사용되는 방법이 아닙니다.
SELECT (
    CASE
        WHEN PRICE < 10000 THEN '0 - 9999'
        WHEN PRICE >= 10000 AND PRICE < 20000 THEN '10000 - 19999'
        WHEN PRICE >= 20000 AND PRICE < 30000 THEN '20000 - 29999'
        ELSE '30000 이상'
    END) AS PRICE_GROUP,
    COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP;

 

Comments