database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9231 게시물 읽기
No. 9231
정렬에 대하여 물어봅니다.(순번 정렬입니다만 예외조건을 넣는 방법)
작성자
송민재(darknero)
작성일
2013-02-06 12:02
조회수
9,160

 아래와 같이 되있는 것을 0을 빼고, 1부터 오름차순으로 정리하고 싶은데 하는 방법을 알려주셨으면 감사하겠습니다.

NUM
0
0
0
5
6
4
3
7
8

 

NUM
3
4
5
6
7
8
0
0
0

 

 

이 글에 대한 댓글이 총 6건 있습니다.

0을 null 로 취하여 정렳해 보세요

 

tyro님이 2013-02-06 12:09에 작성한 댓글입니다. Edit

 0인값을 Null로 변환하여 정렬하라는 건가요?

현재 기본값을 무조건 0으로 넣고있기때문에 지금상태에서는 정렬할 수 없나요?

Order by로 어떻게 안될려나..

송민재(darknero)님이 2013-02-06 12:14에 작성한 댓글입니다.

기본적인 order by의 예외는 null 자료인 경우 외에는 없습니다.

8보다 null이 크다는 DB입장에서는 알 수 없지만, 8보다 0이 더 큰 것은 DB 입장에서는 명확하기 때문입니다. 

DB에서 하는 일은 여기까지입니다.

'0은 모든 숫자들 보다 크다' 라는 것은 사용자 정의 규칙일 뿐입니다.

 

이것을 위해서 order by 에서 사용할 수 있는 using 예약어를 제공하는데,

이 using 뒤에는 연사자가 옵니다. 이 연산자를 하나 만들어서 쓰면 풀릴 것 같네요.

예를 들어서,

select 8 >? 0 이 쿼리 결과가 false가 나오는 >? 연산자 하나를 만들면 될듯.

 

그런데, 일이 너무 번그러워질 것 같네요.

그냥 0를 null 보는 방법을 택하든가, 아니면, union all 로 두개의 쿼리로 나눠 합치든가 해야할 것 같네요.

김상기(ioseph)님이 2013-02-06 15:32에 작성한 댓글입니다.

tyro님,김상기님 감사합니다.

두개의 쿼리합치는 것은 아직 실력이 안되서 쿼리를 2번 날리는거로 해결했네요^^

송민재(darknero)님이 2013-02-06 18:32에 작성한 댓글입니다.

대충 이렇게 하시면 될 듯해요.

--explain analyze
with temp
as
(
 select 0 num union all
 select 0 num union all
 select 1 num union all
 select 4 num union all
 select 2 num
)
select num
from temp
order by
 case when num = 0 then (select max(num) + 1 from temp) else num end

이재학님이 2013-02-07 14:51에 작성한 댓글입니다. Edit

 WHERE num > 0 ORDER BY NUM;

 

이렇게 하면 안되었을까요? ㅎㅎ

서귀동(애송이)님이 2013-03-27 09:11에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9235autocommit=false 설정(windows) [1]
강성구
2013-02-17
9514
9234NOLOGGING 변환 ㅠㅠ 도와주세요 고수님. [2]
김성미
2013-02-13
9053
9232C언어에서 odbc를 이용한 connect 방법 문의 [1]
insun
2013-02-08
10394
9231정렬에 대하여 물어봅니다.(순번 정렬입니다만 예외조건을 넣는 방법) [6]
송민재
2013-02-06
9160
9230트리거관련해서 궁금중이 생겼습니다.... [2]
김원진
2013-02-05
9139
9229다중행 서브쿼리 update 방법 [2]
효연
2013-02-04
9527
9228트리거 함수 작성하는데 막히는 부분이 있습니다. [1]
이기자
2013-02-01
8591
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다