DataBase/구루비SQL Quiz

[PostgreSQL]IP목록 정렬

cororo2 2023. 9. 21. 16:17

문제> 다음과 같은 ip목록을 가진 [그림1]테이블에서 ip순서대로 정렬[그림2]하여 결과 출력

   *Postgre SQL은 rownum 사용 불가하여 row_number 사용

 

 

<정답>

1. rownum없어 row_number로 대체하여 num생성

    row_number order by ip로만 생성시 10,100,10.1과 10.100.1.10의 순서가 뒤바뀜

SELECT ROW_NUMBER()OVER(ORDER BY CASE WHEN split_part(IP,'.',3)='10'
                                       THEN 1 ELSE 2 END , IP)NUM, IP
  FROM T

2. split_part로 '.'구분자로 나눈뒤 lpad로 3자씩 채워 정렬진행

SELECT NUM, IP
FROM(SELECT ROW_NUMBER()OVER(ORDER BY CASE WHEN split_part(IP,'.',3)='10'
                                           THEN 1 ELSE 2 END , IP)NUM,IP
  FROM T) A
ORDER BY LPAD(Split_part(IP,'.',1),3,'0'), LPAD(split_part(IP,'.',3),3,'0')

출처 : http://www.gurubee.net/lecture/2195

 

[퀴즈] IP 목록 정렬하기

  이번 퀴즈로 배워보는 SQL 시간에는 IP 목록을 정렬하는 쿼리를 어떻게 작성하는지에 대해 알아본다.   지면 특성상 문제와 정답 그리고 해설이..

www.gurubee.net