제가 하고자 하는것은
출석체크 테이블에 저번달 기준으로 특정 회원의 출석일수를 체크하려고 하는데,
(출첵을 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개가 나오는데 ㅠ 어떻게 해야되나요?ㅠ

답변 1개 / 댓글 2개
group by로 묶으실때 그냥 regDt 그대로 묶으셔서 초단위까지 다른걸로 다 묶이네요. 날짜 단위로 묶으셔야 하나로 카운팅 됩니다.
답변에 대한 댓글 2개
GROUP BY date_format(regDt, '%Y%m%d')
이렇게 함수가 들어 간 형태는 비효율적입니다.
답변을 작성하려면 로그인이 필요합니다.
GROUP BY date_format(regDt, '%Y%m%d')
감사합니다! ㅎ