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
운영게시판
최근게시물
Oracle Q&A 21066 게시물 읽기
No. 21066
그룹 합계에 관하여 질문드립니다.
작성자
이진홍
작성일
2004-12-15 11:59ⓒ
2004-12-15 13:29ⓜ
조회수
2,071

데이타가 예를 들어서

table

gname data(문자열)

a  21~~c~~

b  11~d~~

b  12~~~c~~

a  11~~c~~~

a  23~~d~~~

b  33~~d~~

그러니까 여러개의 그룹에 데이타들이 중복되어 있다고 하면

gname별로 c들어간 문자열의 앞 숫자 합과 d들어간 문자열의 앞숫자 합(like로 문자열을 찾아야...)을 구하고 싶습니다.

 

답은

gname c d

a    32   23

b    12    44

 

이렇게 표현하고 싶은데... 사실은 더 길어요. cd와 같은것을 8개 나열해야 하는데...

어떻게 처리해야 할지 묻고 싶습니다.

sum을 구하는 부분에 서브쿼리를 8번을 써야 하는지요....

쉽게 처리할수 없는지...

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

조금 쉽게 할 수 있겠네요..

 

SELECT GNAME,SUM(length(data)-length(replace(data,'c',''))) as C,

 SUM(length(data)-length(replace(data,'d',''))) as D

FROM TABLE

GROUP BY GNAME

 

원리는 원데이타 길이에서 해당문자를 뺀 데이타길이를 빼주면 원하는 캐릭터 숫자가 나타나고, 그것을 그룹하면 될 것 같습니다.

도움이 되셨으면 좋겠습니다...^^

나두초보님이 2004-12-15 13:18에 작성한 댓글입니다.
이 댓글은 2004-12-15 13:21에 마지막으로 수정되었습니다. Edit

질문이 좀 이상한거 같아서 수정했습니다.

문자열이 들어간 열을 찾아서 앞에 숫자만 가져다가 합계를 내야 합니다.

예로 가족이 5명있고 다섯명 모두 신용카드(비씨, 국민, 엘지....)가 5개 있다라고 가정할때

월단위로 구성원당 각 카드의 월간 합계를 구하는거지요.

데이타는 금액과 카드종류가 함께 넣어져있는 데이타라서 위와같이

찾아서 금액만 짤라 합계를 내야 합니다.

 

결과는

구성원    비씨   국민....

    1         1000    20000

    2          0        5000

..... 이런식으로여

 

이진홍님이 2004-12-15 13:27에 작성한 댓글입니다. Edit

원 질문하고 요지가 완전히 틀리네요^^..

하여간...

 

select gname,sum(case when instr(data,'c') > 0 then to_number(substr(data,1,2),'99')
                                                                       else 0
                                                                        end ) as c_sum,

sum(case when instr(data,'d') > 0 then to_number(substr(data,1,2),'99')
                                                                       else 0
                                                                        end ) as d_sum

 from TABLE
group by gname

 

이런식으로 쓰시면 될 듯 합니다.

나두초보님이 2004-12-15 14:00에 작성한 댓글입니다. Edit

답변감사합니다.

처리가 될듯합니다.

오늘 꼭 로또 사세요. 대박 빌어드리죠^^

이진홍님이 2004-12-15 14:40에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
21069SQL PLUS접속시 애러가납니다. [3]
kami
2004-12-15
1784
21068shared_pool 메모리 사용량 [7]
로그파일
2004-12-15
6644
21067ORA_00604 에러 [1]
초보
2004-12-15
3992
21066그룹 합계에 관하여 질문드립니다. [4]
이진홍
2004-12-15
2071
21065테이블 스페이스 크기 조정 [1]
초보
2004-12-15
1352
21064[질문]디스크 I/O 튜닝에 대해... [4]
김선구
2004-12-15
2468
21063group by 절을 쓰면서 통계를 출력 [3]
정진종
2004-12-15
4056
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다