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 4380 게시물 읽기
No. 4380
count(count(*))를 대체할 수 있는 함수가 있나요?
작성자
강희정(k5h7j)
작성일
2002-10-11 10:47
조회수
1,875

sum(coun(*)), count(count(*)) 처럼 nested 함수를 사용해야 하는데요

이것을 대체할 수 있는 함수가 있나요

 

 

SELECT NVL(MAX(ID), 100) FROM TEST

NVL처럼 max값과 100을 비교해서 더 큰숫자를 찾고 싶은데

이런 함수도 있을까요?

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

대체 할수 있는 함수는 없습니다.

 

만약 그런 함수를 계속 사용해야 한다면 엄청나게 퍼포먼스를 떨어뜨리는 결과가 될것입니다. 그럴 경우에는 다른 방법을 강구해봐야 합니다.

 

예를 들면 테이블의 정보를 (count(*) 와 같은) 미리 다른 테이블 등에 저장해 두는 방법을 사용해야 합니다. 물론 테이블로 저장하는 것은 RULE 이나 또는 TRIGGER 등을 이용하는 것이 좋겠지요. 그럼 수작업을 피할수 있을것이니 말이죠.

 

그리고 NVL(...) 함수는 그 값이 NULL 일때 다른 값으로 치환해라는 의미의 함수입니다.

 

즉 select NVL(id, 100) 이렇게 하면 id 라는 column 값을 가져 오는데 만약 id col 값이 NULL 이라면 그 값을 100으로 설정해서 selection 해라는 뜻이 되죠.

 

PostgreSQL 에서 NVL 함수를 구현할려면 다음과 같이 해야 합니다.

 

select (CASE when id is null then 100 else id) as col_name from table_name;

 

만약 max 값과 100을 비교해서 더 큰 값을 가져오고 싶다면 CASE 구문을 이용해야 합니다.

 

select (CASE when max(id)>=100 then max(id) else 100) as col_name from table_name;

 

CASE 구문을 잘 익혀 두시면 여러가지 응용이 가능하며 오라클에는 있으나 PostgreSQL 에서는 지원되지 않는 여러가지 함수들을 손쉽게 구현할수 있습니다. (예를 들면 DECODE 등등)

 

도움이 되셨길 바랍니다.

정재익(advance)님이 2002-10-15 20:01에 작성한 댓글입니다.

캑~~

 

정신차리고 아침에 보니 Query 문이 틀렸군요. 다음과 같이 수정해 주세요. CASE 문 마지막에 end 가 빠졌네요.

 

select (CASE when id is null then 100 else id END) as col_name from table_name;

 

select (CASE when max(id)>=100 then max(id) else 100 END) as col_name from table_name;

정재익(advance)님이 2002-10-16 11:10에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4383[질문]postgresql에서는 한글지원(jdbc에서의한글검색)이 가능한가요. [1]
이근호
2002-10-11
961
4382[질문]postgresql 안의 db의 종류와 table종류 알아보기 [1]
이근호
2002-10-11
1079
4381[질문] 답변이 없으셔서 재질문 ^^; [1]
이근호
2002-10-11
796
4396┕>Re: [질문] 답변이 없으셔서 재질문 ^^;
이근호
2002-10-22 16:40:05
721
4380count(count(*))를 대체할 수 있는 함수가 있나요? [2]
강희정
2002-10-11
1875
4378[질문] Ant를 어떻게 설치해야 하는지요...==; [1]
이근호
2002-10-10
841
4377황치영님 감사합니다. 그런데, Error가... [1]
김선혁
2002-10-10
1147
4376[질문]JDBC 드라이버 설치하기.
이근호
2002-10-10
1024
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다