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 6488 게시물 읽기
No. 6488
쿼리문 예상치 않은 결과가 나오네요. -ㅁ-;;
작성자
KSH
작성일
2005-12-21 17:42ⓒ
2005-12-22 10:52ⓜ
조회수
2,778

---- psql 7.4.2, Unix(HP)

CREATE TABLE TEST001 ( trs_gubn character(20) );
insert into TEST001 values('E001A0000');
insert into TEST001 values('E001B0000');
insert into TEST001 values('E001C0000');
insert into TEST001 values('E002A0000');
insert into TEST001 values('E002B0000');
insert into TEST001 values('E002C0000');
insert into TEST001 values('E003A0000');
insert into TEST001 values('E003B0000');
insert into TEST001 values('E003C0000');
insert into TEST001 values('A001A0000');
insert into TEST001 values('B001A0000');
insert into TEST001 values('E001 ');
insert into TEST001 values('E002 ');
insert into TEST001 values('E003 ');


-- 앞 4자리로 그룹핑한다.
Select substr(trs_gubn, 1, 4) as trs_gubn from TEST001
group by substr(trs_gubn, 1, 4) order by substr(trs_gubn, 1, 4);
trs_gubn
----------
A001
B001
E001
E002
E003
(5 rows)


-- 그룹핑한 데이터의 특정조건의 데이터를 조회한다.
select substr(trs_gubn, 1, 4) from TEST001 where substr(trs_gubn, 1, 1) = 'E'
group by substr(trs_gubn, 1, 4) order by substr(trs_gubn, 1, 4);
또는
select aa.trs_gubn from
(
select substr(trs_gubn, 1, 4) as trs_gubn from TEST001
group by substr(trs_gubn, 1, 4) order by substr(trs_gubn, 1, 4)
) aa
where substr(aa.trs_gubn, 1, 1) = 'E';

trs_gubn
----------
E001
E001
E002
E003
(4 rows)

※ 질문 :: 위 결과에서 'E001' 이 왜 2번 나오는지 이해 할 수가 없네요. 고수님들 답변 부탁드립니다.

 

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

PostgreSQL 8.1.1(Win용)을 사용중인데...

제가 해보니 제대로 잘 나오는데요...

E001
E002
E003

쿼리문을 좀 줄여보시면 어떨까요 ^^; 혹 될지도...

select substr(trs_gubn, 1, 4)  from TEST001
 group by substr(trs_gubn, 1, 4)
having substr(trs_gubn, 1, 4) like 'E%'

김이수(isukim)님이 2005-12-21 22:47에 작성한 댓글입니다.

우선 김이수님 답변 감사 드립니다.

저는 7.4.2 를 사용하고 있으며, Unix용 입니다.

위 쿼리를 실행한 결과는 다음과 같습니다.

 만일 8.대에서 제데로 된다면, 7.4.2 Unix 버전에 문제가 있는거는 아닐까요?

 

systemdb=# select substr(trs_gubn, 1, 4)  from TEST001
systemdb-#  group by substr(trs_gubn, 1, 4)
systemdb-# having substr(trs_gubn, 1, 4) like 'E%'
systemdb-# ;
substr
--------
E001
E003
E002
E001
(4 rows)
KSH님이 2005-12-22 10:50에 작성한 댓글입니다. Edit

흠... Mysql과 oracle에서는 문제 없이 잘 되는군요..

KSH님이 2006-01-17 14:46에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6491치명적오류 [1]
이경호
2005-12-28
3694
6490[질문]select 에서 같은 컬럼이름 일 경우 [3]
레도
2005-12-26
2949
6489두번의 쿼리를 한번에 할 수 있는 방법이 있을까요? [2]
최현덕
2005-12-24
2949
6488쿼리문 예상치 않은 결과가 나오네요. -ㅁ-;; [3]
KSH
2005-12-21
2778
6487DB 설계관련 꼭좀 알려주세요 [1]
김지호
2005-12-20
3043
6485pg_dumall로 백업된 파일에서 특정 DB만 복구하는 방법 [2]
dba
2005-12-20
3440
6484컴파일 방법? [1]
신인식
2005-12-19
3280
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다