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 9035 게시물 읽기
No. 9035
pgadmin III에서 null값 넣기... 도와주세요..ㅠ
작성자
조현석(gustjrchlrh)
작성일
2012-10-31 10:31
조회수
11,963

 어제 늦게 질문을 올렸는데 곰곰히 생각해 보니깐 질문 자체가 틀린것 같아서 올린 질문을 지우고 다시 이렇게 글을 올립니다.

상황은 프로그램에서 데이터값들을 postgresql로 data warehousing을 해서 테이블 값들을 넘겨받았습니다.

그 테이블에 들어있는 data를 가지고 view를 만들어 값들을 조회하는데 문제가 있어서 질문을 합니다.

예를들어 테이블에 1~10까지 숫자들이 랜덤하게 들어가 있고 없는 숫자들도 있고요..

view에서 조회하는 값들은 1~3까지는 low, 4~7까지는 mid, 8~10까지는 high라고 정의하여

조회해볼 때 기존 테이블에 있는 데이터에 1~3까지의 숫자가 없으면 low를 조회하는 view에서는 '0 rows'라고 표시가 되더군요..

그래서 low, mid, high를 한꺼번에 조회하는 view에 아무런 데이터가 보이지 않습니다..ㅠㅠ mid, high는 있고 low만 없는 상태입니다.

질문의 요지는 low에 값이 없을때 null값이나 '0'을 넣을 수 있는가 하는 것입니다.

그런 값이라도 들어가야 low, mid, high를 한꺼번에 조회하는 테이블에 데이터가 보일것 같아서요..


DB를 만져본적도 없고 학교다닐때 잠깐 배웠던 것이 전부인데 일은 해야겠고..

그래서 이렇게 염치없이 질문을 올립니다..ㅠ

도와주세요..ㅠ

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

low에 값이 없으면 null이나 0을 넣도록 CASE문을 사용해 보시면 어떨까요?

CASE

   WHEN low IS NULL  THEN 0

END

 

아니면 VIEW구성이 어떻게 되있는지는 모르겠지만 외부조인을 이용하는 방법도 있을것 같네요.

 

정원천(아리수)님이 2012-10-31 10:46에 작성한 댓글입니다.

답변 정말 감사합니다^^

복받으실 거에요~ㅋㅋ

제가 질문했던 쿼리는

SELECT vi_ep_vtests_full.dev_id, count(vi_ep_vtests_full.title) AS low

FROM vi_ep_vtests_full

WHERE vi_ep_vtests_full.dev_id IS NOT NULL AND vi_ep_vtests_full.severity >= 1 AND vi_ep_vtests_full.severity <= 3

GROUP BY vi_ep_vtests_full.dev_id;

 

이렇게 쿼리를 짰는데요.. 이것도 제가 짠게 아니라 너무 어렵습니다..

테이블에 1~10까지 숫자들이 랜덤하게 들어가 있는 상태에서

1~3까지 숫자들의 갯 수를 카운트 하여 표시하는 겁니다..ㅠ

 

그런데 숫자들이 범위안에 숫자가 없으면 아무런 데이터가 안보이고요..

카운트 하는 상황에서 CASE 구문이 먹힐까요..??

CASE를 해봤는데 자꾸 에러가 나서요..ㅠㅠ

조현석(gustjrchlrh)님이 2012-10-31 11:33에 작성한 댓글입니다.

이렇게 해보세요.

 SELECT vi_ep_vtests_full.dev_id,

CASE

WHEN count(vi_ep_vtests_full.title) = 0 THEN 0

ELSE count(vi_ep_vtests_full.title)

END 

AS low

FROM vi_ep_vtests_full

WHERE vi_ep_vtests_full.dev_id IS NOT NULL AND vi_ep_vtests_full.severity >= 1 AND vi_ep_vtests_full.severity <= 3

GROUP BY vi_ep_vtests_full.dev_id;

정원천(아리수)님이 2012-10-31 14:24에 작성한 댓글입니다.

안녕하세여.

위의 쿼리에 대해 보면 vi_ep_vtests_full.title에

low, mid, high 또는 null 값이 포함되어 있는 걸로 보이는데,

count(컬럼명)을 넣어주셨는데 count(컬럼명)으로 조회를 하시면

null 을 포함시키지 않고 무시하고 출력을 합니다.

간단하게 count(*) 를 주어서 null을 포함시키시면 될 듯 합니다.

위의 쿼리에서 count에 * 을 주시면 될 것 같네여.

그리고 여담으로 오라클에서 쓰는 nvl 함수(null값을 변경하는 함수)는 포스트그레에서는

coalesce 함수를 사용하시면 됩니다. ex) coalesce(vi_ep_vtests_full.title, 0)

김혁민(goodesskr)님이 2012-10-31 16:25에 작성한 댓글입니다.
이 댓글은 2012-10-31 16:27에 마지막으로 수정되었습니다.

정원천(아리수)님, 김혁민(goodesskr)님 정말로 감사드립니다.

정말로 기초적인 질문에 댓글을 달아주셔서 제게 정말 큰 도움이 됐어요^^

다시한번 감사드립니다~

정말 큰 복 받으실거에요~~^^

조현석(gustjrchlrh)님이 2012-10-31 22:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9038수동 인덱스 힌트 셀릭트. [2]
VQ
2012-11-11
10361
9037질문사항이 있어서 답변 요청 드립니다..ㅠ.ㅠ [2]
박철완
2012-11-09
9297
9036pgpool watchdog 관련 [1]
김민석
2012-11-07
9668
9035pgadmin III에서 null값 넣기... 도와주세요..ㅠ [5]
조현석
2012-10-31
11963
9033초보 운영 / 튜닝 관련해서 어떤 책이 좋을까요? [1]
정호영
2012-10-25
10980
9032그냥 궁금한 성능면 ... [4]
김현진
2012-10-24
9476
9031DRITA 설정 질문입니다. [5]
김혁민
2012-10-16
12203
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다