-
SQL - 가격'대'별 구분문제풀이/SQL 2024. 4. 9. 16:40
-- 코드를 입력하세요 SELECT case when price between 0 and 9999 then '0' when price between 10000 and 19999 then '10000' when price between 20000 and 29999 then '20000' when price between 30000 and 39999 then '30000' when price between 40000 and 49999 then '40000' when price between 50000 and 59999 then '50000' when price between 60000 and 69999 then '60000' when price between 70000 and 79999 then '70000' when price between 80000 and 89999 then '80000' end price_group , count(1) product from product group by 1 order by 1 asc
이러한 노가다는
SELECT (FLOOR(PRICE/10000))*10000 f, count(1) product FROM PRODUCT group by 1 order by 1 asc
와 같이 소숫점을 처리하는
floor round ceiling으로 간 단 하게 해결 할 수 있다.
더보기SELECT IF(PRICE < 10000,'0',CONCAT(substr(price,-4), '0000')) as PRICE_GRUOP, COUNT(*) as PRODUCTS FROM PRODUCT GROUP BY IF(PRICE < 10000, '0', LEFT(PRICE, 1)) ORDER BY PRICE
ㄴ 연구 필요
SQL에서 split 이 있을까 하여 찾아보다가 다른걸 찾았다.
string_split( "문자열" , "구분자")
[MSSQL] STRING_SPLIT 함수, 구분자로 자르기 (행으로 분리) (tistory.com)
추가
데이터 표현함에 있어
varchar() 는 variable character 로 글자수를 의미한다
이와 달리char 는 character 로 고정된 글자수를 의미하며 만약 char(4)의 경우 'ab'라는 값만 가지고 있다면
나머지 2칸은 빈칸으로 채워져 'ab '의 형상으로 기록된다.
그리고 varchar가 4이하인 경우 char로 고정된다고 하며 이전에는 4글자가 아닌 4byte의 기준이었다고 한다.
이러한 차이점이 존재하여 작업 처리속도에 영향을 미칠 수 있으나 사람이 느끼기 힘든 수준이라고 하며
varchar 의 경우 기존보다 더 큰 데이터를 저장하게 될 경우 데이터 파편화가 발생 할 수 있으며 이를 개선하기 위해
분할된 데이터를 정리하는 기능이 생겼다고 하나 정확하게 확인하지 못하였다고 한다.
'문제풀이 > SQL' 카테고리의 다른 글
SQL - 특정 최대 값을 가진 행 찾기 (0) 2024.04.09 SQL - 문제 (0) 2024.04.03 SQL - 날짜조회(범위) (0) 2024.04.02 SQL 문제풀이 -3 (0) 2024.04.01 SQL 문제 풀이 - 2일차 (1) 2024.03.29