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를 수행합니다.
답변을 작성하시기 전에 로그인 해주세요.