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
운영게시판
최근게시물
MS-SQL Q&A 1857 게시물 읽기
No. 1857
통계 쿼리 좀 봐주십시요.
작성자
참치
작성일
2005-03-30 13:24ⓒ
2005-03-30 14:02ⓜ
조회수
2,913

work라는 테이블에 f_work,s_work,t_work,page라는 컬럼이 있고

 

f_work s_work t_work page
aa null aa 3
bb bb null 2
cc cc null 1
aa aa null 2
null bb null 1
cc null cc 1
null dd dd 3


 

aa,bb,cc 라는 사용자가 작업한 내용이 들어있습니다.

 

여기서

사용자별로 통계를내고 싶습니다.

 

user_id f_count f_page_sum s_count s_page_sum t_count t_page_sum
aa 2 5 1 2 1 3
bb 1 2 2 3 0 0
cc 2 2 1 1 1 1
dd 0 0 1 3 1 3


 

이런결과치를 얻고싶습니다. 여기서 f_count 는 작업한수이고 f_page_sum 은 작업한페이지의 합계입니다.

공부가 부족한 탓인지 쉽지가 않군요.

선배님들의 조언 부탁드립니다.

 

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

데이터를 확인하는 것이 힘이 드는걸요.

create table구문과

insert 구문을 보여준 샘플데이터에 의거한 모양으로 주고

결과의 모양을 내어주는게 같이 고민하는데 도움이 될 듯한데요 ^^

 

여리님이 2005-03-30 13:43에 작성한 댓글입니다. Edit

앗 이거 엉망이군요.^^;; 일단 보기편하게 수정하였습니다.

참치님이 2005-03-30 14:03에 작성한 댓글입니다. Edit

create table #work (
  uid varchar(10)
, f_work varchar(10)
, s_work varchar(10)
, t_work varchar(10)
, page int
)
insert into #work values ('aa', 'aa', null, 'aa', 3)
insert into #work values ('aa', 'aa', 'aa', null, 2)
insert into #work values ('bb', 'bb', 'bb', null, 2)
insert into #work values ('bb', null, 'bb', null, 1)
insert into #work values ('cc', 'cc', 'cc', null, 1)
insert into #work values ('cc', 'cc', null, 'cc', 1)
insert into #work values ('dd', null, 'dd', 'dd', 3)

select * from #work
go

 

select uid
        , count(f_work) as f_count, case when sum(f_page) is null then 0 else sum(f_page) end as f_page_sum
        , count(s_work) as s_count, case when sum(s_page) is null then 0 else sum(s_page) end as s_page_sum
        , count(t_work) as t_count, case when sum(t_page) is null then 0 else sum(t_page) end as t_page_sum
  from (select uid, f_work, s_work, t_work
                   , case when f_work is not null then page end as f_page
                   , case when s_work is not null then page end as s_page
                   , case when t_work is not null then page end as t_page
      from #work) tmp
  group by uid


 

역시 table은 만들 때 잘 만들어야겠죠.. ^^;;

 

그럼..

길가는 나그네..님이 2005-03-30 15:14에 작성한 댓글입니다.
이 댓글은 2005-03-30 15:16에 마지막으로 수정되었습니다. Edit

감사합니다.많은 도움이 됬네요 ^^

참치님이 2005-03-30 15:20에 작성한 댓글입니다. Edit

select COALESCE(f_work, s_work, t_work) workid
         ,Count(f_work)                                f_count
        ,IsNull(Sum(case when f_work is not null then page end), 0) f_page_sum
        ,Count(s_work)                                s_count
        ,IsNull(Sum(case when s_work is not null then page end), 0) s_page_sum
        ,Count(t_work)                                 t_count
        ,IsNull(Sum(case when t_work is not null then page end), 0) t_page_sum
from work
group by COALESCE(f_work, s_work, t_work)

 

머 같은 방식이지만...

이렇게도 되겠네요...

mur님이 2005-03-30 18:55에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1861오라클 쿼리인데요.. MS-SQL 로 바꾸려고....ㅡㅡ [1]
궁금이
2005-04-02
5740
1859회원로그인 하는 부분중에서.....질문 [3]
최중권
2005-03-31
12908
1858새로운 필드를 추가시키려면... [1]
고영훈
2005-03-31
2357
1857통계 쿼리 좀 봐주십시요. [5]
참치
2005-03-30
2913
1856opendatasource()를 사용한후 세션처리방법 좀 갈켜주세요 [1]
hohan
2005-03-30
1848
1855MySql의 제로필과 같은 형식이 MS-SQL에도 있나요? [1]
이상도
2005-03-29
1902
1854데이터 입력 방법??? [2]
호기심
2005-03-29
2007
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다