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
운영게시판
최근게시물
MySQL Q&A 28140 게시물 읽기
No. 28140
DISTINCT와 SUM동시 적용 질문입니다.
작성자
꿍스
작성일
2009-04-05 21:49ⓒ
2009-04-06 22:12ⓜ
조회수
5,897

data_id charge_uid charge_place partner_uid partner_place fstate state
1 팀원 테스트팀 제휴사 제휴사임 AS요망 승인
1 팀원 테스트팀 제휴사 제휴사임 AS요망 승인
1 팀원 테스트팀 제휴사 제휴사임 AS요망 보류
2 팀원 테스트팀 제휴사 제휴사임 AS요망 승인
2 팀원 테스트팀 제휴사 제휴사임 AS요망 승인
2 팀원 테스트팀 제휴사 제휴사임 AS요망 접수


이 테이블에서 전체 행수와 fstate가 AS요망인 행 수를 구해오는 것입니다. GROUP By charge_uid로 가져오는데요


쿼리를 이렇게 해서 가져옵니다.



            SELECT `User`.place,

            COUNT( DISTINCT `Data`.data_id ) AS `used`,

            SUM( DISTINCT data_id AND if( `Data`.fstate = 'AS요망', 1, 0 ) ) AS `as`,

            SUM( if( `Data`.state = '승인', 1, 0 ) ) AS `accepted`

            FROM `users` AS `User`

            LEFT JOIN `Data` ON `Data`.charge_id = `User`.uid GROUP BY `User`.place

            ORDER BY `User`.place ASC, `User`.role DESC


제가 의도한 as 컬럼의 숫자는 2 입니다. data_id가 중복되지 않고 AS요망인 것이 두개가 나오는 것입니다.


그런데 저렇게 하면 1밖에 안나옵니다. AS요망으로 1 또는 0 이 되는 값이 중복안되는거 같습니다. ㅠ_ㅠ


data_id가 중복되지 않고 AS요망인 것을 뽑을 수 있는 방법이 있을까요?


제가 생각하는 방법은 서브쿼리를 이용하는 것입니다.



            SELECT `User`.place,

            COUNT( DISTINCT `Data`.data_id ) AS `used`,

            (SELECT COUNT(*) FROM works WHERE fstate = 'AS요망' ) AS `as`,

            SUM( if( `Data`.state = '승인', 1, 0 ) ) AS `accepted`

            FROM `users` AS `User`

            LEFT JOIN `Data` ON `Data`.charge_id = `User`.uid GROUP BY `User`.place

            ORDER BY `User`.place ASC, `User`.role DESC


혹시 더 간단한 방법이 있을까요?

           

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

left join 인데 조인조건은 없네요? 어떤 결과가 될지 예측이 불가하군요

이경환(babocom)님이 2009-04-06 03:45에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
28143제가한 정규화가 맞나요?? 부탁드립니다
박민범
2009-04-07
5521
28142mysqladmin -u -p processlist 로 확인해보면 50개 정도 떠 있는데.... [3]
김승동
2009-04-07
5913
28141mysql 조인방식은 nested loop 인가요? hash 인가요? [1]
mysql초보
2009-04-06
7309
28140DISTINCT와 SUM동시 적용 질문입니다. [1]
꿍스
2009-04-05
5897
28139mysql 최신우편번호 자료 있으신분 ... [1]
초보개발자
2009-04-05
6399
28135mysqldump를 이용한 쿼리결과 백업 [1]
고영호
2009-04-04
6780
28134INSERT 하다가 오류가 발생했습니다. 원인을 어떻게 찾을 수 있을까요? [3]
김승동
2009-04-04
4978
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다