2026, 새로운 도약을 시작합니다.

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    홍길동

이런 테이블이 있을때

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

Copy


date     count(member)   hong

2022-01-01     2       "1" 

짜본 쿼리는

Copy



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개

채택된 답변
+20 포인트

b table 대신에

( select DISTINCT date,name from b_table ) b_table

사용하시면 되겠네요.

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

답변 감사합니다. b table대신이면 어디 말씀이신가요??
... from a join

( select DISTINCT date,name from b_table ) b -- 여기에 넣으면 됩니다.

on a.date = b.date ...

댓글을 작성하려면 로그인이 필요합니다.

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

Copy
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개

count는 그게맞는데 count if라서요 ㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고