mysql join group by에서 count if 중복값 제거하기

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
mysql join group by에서 count if 중복값 제거하기

QA

mysql join group by에서 count if 중복값 제거하기

본문

a table

no     date

1     2022-01-01

2     2022-02-02

3     2022-03-03

가 있고

 

b table

date       name

2022-01-01    홍길동

2022-01-01    홍길동

2022-02-02    홍길동

 

이런 테이블이 있을때

 

같은날짜에 총인원과 홍길동인사람(중복제거)의 갯수로 아래처럼 결과값이 나오고 싶은데,

 


date     count(member)   hong
2022-01-01     2       "1" <<<이게 1이 안됨
2022-02-02     1       1

짜본 쿼리는

 



select  a.date,count(b.name) as count(member),

COUNT(if(b.name='홍길동',name,NULL)) AS hong

from a join b on a.date = b.date

group by date;

 

이런데

 

이러면 나머지는 괜찮은데 홍길동인사람 중복을걸를수 없더라구요.

 

방법이 없을까요?

이 질문에 댓글 쓰기 :

답변 2

b table 대신에

( select DISTINCT date,name from b_table ) b_table

사용하시면 되겠네요.

전체 내용을 알면 더 나은 방법이 있을 수 있습니다.

MySQL에서 JOIN과 GROUP BY를 사용하면서 COUNT를 사용하려면, 중복 값을 제거하려면 DISTINCT 키워드를 사용할 수 있습니다.

 

SELECT COUNT(DISTINCT column_name)
FROM table1
JOIN table2
ON table1.id = table2.id
GROUP BY column_name;

위의 쿼리는 table1과 table2를 JOIN하고, id 열을 기준으로 그룹을 묶어 column_name에 대한 중복 값을 제거하여 COUNT를 수행합니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 1,515
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT