ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 의 경우 기존보다 더 큰 데이터를 저장하게 될 경우 데이터 파편화가 발생 할 수 있으며 이를 개선하기 위해

    분할된 데이터를 정리하는 기능이 생겼다고 하나 정확하게 확인하지 못하였다고 한다.

    데이터 타입 CHAR, VARCHAR의 차이점, 무엇을 써야할까? (tistory.com)

    '문제풀이 > 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
Designed by Tistory.