중복질문 mysql 채택완료

제가 하고자 하는것은 

출석체크 테이블에 저번달 기준으로 특정 회원의 출석일수를 체크하려고 하는데,

(출첵을 2개 3개 되는게 잇어서 ㅠ)

regDt가 같은날에 몇개가 등록되든 1개로 하려고 하는데,


sql문을 

SELECT count(*) as cnt FROM (SELECT COUNT(regDt) AS count FROM g5_attention where memNo='11962' and contents = '출석체크 참여'  and regDt BETWEEN '2022-05-01 00:00:00' and '2022-05-31 23:59:59' GROUP BY regDt HAVING (count >= 1) ) AS x

요렇게 햇는데,
32개가 찍히더라고여 ㅠ

그래서 다른식으로 조회를 해봣더니
SELECT regDt, COUNT(regDt) as cnt FROM g5_attention where memNo='11962' and contents = '출석체크 참여' and regDt BETWEEN '2022-05-01 00:00:00' and '2022-05-31 23:59:59' GROUP BY regDt HAVING COUNT(regDt) >= 1


보시면 18일 1개 나와야되는데 2개가 나오는데 ㅠ 어떻게 해야되나요?ㅠ

1794296171_1654216287.1246.png

답변 1개

채택된 답변
+20 포인트

group by로 묶으실때 그냥 regDt 그대로 묶으셔서 초단위까지 다른걸로 다 묶이네요. 날짜 단위로 묶으셔야 하나로 카운팅 됩니다. 

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

답변에 대한 댓글 2개

답변해주신 걸로 수정했더니 됐습니다! ㅎㅎ
GROUP BY date_format(regDt, '%Y%m%d')

감사합니다! ㅎ
회원수가 적은 경우 상관 없지만 많게 되면
GROUP BY date_format(regDt, '%Y%m%d')
이렇게 함수가 들어 간 형태는 비효율적입니다.

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

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

로그인
🐛 버그신고