본문 바로가기
Stay Hungry Stay Foolish/SQL

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

by HANNI하니 2023. 6. 18.

사용 언어 - MYSQL

프로그래머스 LV 2) 가격대 별 상품 개수 구하기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

정답

TRUNCATE, GROUP BY (정답 맞춘 여부 X) 

TRUNCATE(칼럼명,자릿수) 자릿수까지만 표현하고 나머지 버리기, 자릿수 생략 불가능

TRUNCATE(PRICE,-4) : PRICE를 뒤에서부터 4개 버리기

= FLOOR(PRICE/10000)*10000 : PRICE 칼럼의 값을 10000으로 나누고 FLOOR로 소숫점 제거 후 10000을 곱하기

SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

 

실행순서

FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

but 열 칼럼 별칭 그루핑에서 사용 가능 O

where 절은 불가능

테이블 별칭은 where 절 사용 가능

 

[MYSQL] 별칭(ALIAS)이란? feat.주의사항

별칭(ALIAS)은 칼럼, 테이블, 서브 쿼리, where절 등에 내가 원하는 이름(별칭)을 붙여주는 것으로 접근이 쉬워집니다. 예약어는 AS 1. 칼럼(column)에 별칭 사용하기 -- mem_id, addr 두 가지 칼럼(열)의 이

wnwa.tistory.com

 

 

+ SELECT 문에 CASE ~ END 활용하는 방법

-- CASE ~ END 활용
SELECT  CASE WHEN (0 < PRICE) AND (PRICE < 10000) then 0
             WHEN (10000 <= PRICE) and (PRICE < 20000) then 10000
             WHEN (20000 <= PRICE) and (PRICE < 30000) then 20000
             WHEN (30000 <= PRICE) and (PRICE < 40000) then 30000
             WHEN (40000 <= PRICE) and (PRICE < 50000) then 40000
             WHEN (50000 <= PRICE) and (PRICE < 60000) then 50000
             WHEN (60000 <= PRICE) and (PRICE < 70000) then 60000
             WHEN (70000 <= PRICE) and (PRICE < 80000) then 70000
             WHEN (80000 <= PRICE) and (PRICE < 90000) then 80000
             END AS PRICE_GROUP, count(*)
FROM PRODUCT
GROUP BY PRICE_GROUP
ORDER BY PRICE_GROUP

CASE

          WHEN 조건

          THEN '반환 값'

          ELSE '나머지 경우 반환 값'

END

 

 

 

 

레퍼런스

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글