커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
SQL 고수 튜터님의 도움을 부탁드립니다.
[왕초보] 엑셀보다 쉬운, SQL v3
기타
북마크
전*진
댓글
3
추천
0
조회수
20
조회수
20
답변 완료

안녕하세요.

SQL 강의를 다 듣고 현업에서 가끔 SQL을 만지다가 제가 짠 쿼리인데 한가지 문제가 있어 질문을 드립니다. 사수가 없어서 고군분투 하는데 너무 안 풀리네요ㅜㅜ.


제가 원하는건

access_log 테이블(회원, 비회원의 접속 기록을 저장-회원번호, 접속일시, 에이전트 등 정보 저장, 통계 낼 때는 그룹바이로 카운트 해서 활용)에서 정보를 뽑아와서 이런 결과를 내고 싶습니다.


+------------+---------+-------------+-----------+

| date   | mem_cnt | non_mem_cnt | total_cnt |

+------------+---------+-------------+-----------+

| 2022-09-15 |   0 |     0 |    0 |

| 2022-09-16 |   0 |     0 |    0 |

| 2022-09-17 |   0 |     0 |    0 |

| 2022-09-18 |   0 |     0 |    0 |

| 2022-09-19 |   0 |     0 |    0 |

...중략...

| 2023-04-11 |   0 |     12 |    12 |

+------------+---------+-------------+-----------+


쿼리에서 의도한 것은, 22년 9월 15일 ~ 23년 4월 11일 사이의 회원, 비회원, 전체(회원+비회원) 접속자 수를 출력하는 것입니다.

즉, 209일 치의 레코드가 출력되어야 합니다.


문제는

access_log에 114개의 레코드만 있으면 22년 9월 15일부터 114개의 레코드까지(23년 1월 16일)만 출력이 된다는 것입니다.

제가 LIMIT cluase로 209를 걸어놨는데, access_log의 레코드 수가 209보다 작으면 114개까지만 출력되는 것 같습니다.

제가 의도한 것과 같이, LIMIT 개수대로 레코드를 출력하는 쿼리를 만드려면 제 쿼리를 어떻게 수정해야 할까요?ㅜㅜ

(퇴근길에 핸드폰으로 작성하다 보니 줄바꿈 등 이상한 부분이 있을 수도 있어서 미리 죄송합니다)


SELECT b.date, IFNULL(mem.cnt, 0) AS mem_cnt, IFNULL(non_mem.cnt, 0) AS non_mem_cnt, IFNULL(mem.cnt, 0)+IFNULL(non_mem.cnt, 0) AS total_cnt
FROM (
SELECT DATE_FORMAT(datetime, '%Y-%m-%d')AS date, COUNT(*) AS cnt
FROM access_log
WHERE datetime BETWEEN '2022-09-15 00:00:00' AND '2023-04-11 23:59:59' AND member_seq != 0
GROUP BY DATE_FORMAT(datetime, '%Y-%m-%d')) mem
RIGHT JOIN (
SELECT DATE_FORMAT(datetime, '%Y-%m-%d')AS date, COUNT(*) AS cnt
FROM dmss_access_log
WHERE datetime BETWEEN '2022-09-15 00:00:00' AND '2023-04-11 23:59:59' AND member_seq = 0
GROUP BY DATE_FORMAT(datetime, '%Y-%m-%d')) non_mem
ON mem.date = non_mem.date
RIGHT JOIN (
SELECT @n := @n +1 AS n , DATE_FORMAT(DATE_ADD('2022-09-15', INTERVAL @n -1 day),'%Y-%m-%d') AS date
FROM (dmss_access_log), (
SELECT @N:=0
FROM   DUAL) a
LIMIT  209 ) b
ON non_mem.date = b.date
ORDER BY b.date ASC

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴