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

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를 수행합니다.

 

 

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

회원로그인

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