𝙎𝙌𝙇

[MySQL] SolveSQL 문제풀이 : 소수점 추가하기, CAST 함수

콜라맛갈비 2023. 1. 30. 18:19
728x90

solvesql - 가구 판매의 비중이 높았던 날 찾기

 

solvesql

 

solvesql.com

 

[첫번 째 시도]

furiture_pct가 모두 0으로 들어가있더라구요.

카테고리가 Furniture인 수 / 전체 수를 나누는 과정에서 소수점까지 나타나지 않는 듯 합니다.

 

 

 

[소수점 출력하는 법 추가]

--방법1) 0.00 더해주기

 

--방법2) CAST함수 이용 : CAST (컬럼명 AS 타입)

* 타입 종류

double, real 소수점 아래 15자리까지 표현
float 소수점 아래 7자리까지 표현
BINARY 값을  binary로 변환
CHAR 값을 문자열로 변환
DATE 값을 yyyy-mm-dd의 date로 변환
DATETIME 값을 yyy-mm-dd hh:mm:ss 의 datetime으로 변환
TIME 값을 hh:mm:ss의 time으로 변환
DECIMAL 값을 최대자릿수인(M), 소수점 이하 자릿수(D)로 지정하여 decimal로 변환
NCHAR 값을 nchar로 변환(char랑 비슷하지만, 국가별 문자 세트로 문자열 생성)
SIGNED ~ 값을 signed(부호 있는 64비트 정수)로 변환합니다. 
UNSIGNED ~ 값을 signed(부호 없는 64비트 정수)로 변환합니다. 

 

 

 

 

[최종 코드]

SELECT order_date
      ,count(distinct CASE WHEN category = "Furniture" THEN order_id END) as "furniture"
      ,round(count(distinct CASE WHEN category = "Furniture" THEN order_id END)/(count(distinct order_id)+0.00)*100,2) as furniture_pct
FROM records
GROUP BY order_date
HAVING COUNT(distinct order_id) >= 10
      AND furniture_pct >= 40
ORDER BY furniture_pct desc, order_date

 

 

728x90