[ MYSQL ] 동일한 날짜, 다른 시간인 데이터를 날짜로 group by 하기

이유진·2022년 5월 9일
1
  SELECT
      SUM(money) AS `sum`,
      DATE_FORMAT(crt_date,'%Y-%m-%d') AS `date`,
      COUNT(form_id) AS `count`
  FROM
      form
  WHERE
      prod_id = {prod_id}
      AND crt_date > DATE_ADD(CURRENT_DATE(), INTERVAL -7 DAY)
  GROUP BY
      `date`

group by를 date로 지정하였으나,

같은 날짜별로 group이 되지 못하였다.
그이유를 db에서 찾아본 결과,

날짜는 같으나 시간이 다르게 저장되어 있었다.

date_format을 활용한것을 단지 colume명만 date로 지정하고,
group by할때도 해당 컬럼으로 지정하였으나, 위의 사진과 같이 얻고자 했던 총합산과 총카운트 개수를 얻을수가 없었다.

구글링을 한결과,
https://code-examples.net/ko/q/e2881d
위의 블로그에서 예시를 들어준 결과, 해결책을 찾을수잇었다.

  SELECT
      SUM(money) AS `sum`,
      DATE_FORMAT(crt_date,'%Y-%m-%d') AS `date`,
      COUNT(form_id) AS `count`
  FROM
      form
  WHERE
      prod_id = {prod_id}
      AND crt_date > DATE_ADD(CURRENT_DATE(), INTERVAL -7 DAY)
  GROUP BY
      DATE_FORMAT(crt_date,'%Y-%m-%d')

내가 궁금한건,
AS로 정의해둔 컬럼명으로는 그룹이 왜 지정이 안되는지가 궁금하다..
덕분에... 새로운걸 알게되었지만,

쿼리로만 조회했을때는(최종 데이터 결과물 말고), 합산되서 나왔기때문이다.

그래서, 백에서는 문제가 데이터 전달을 잘해주고 있고,
프론트단에서 무언가 잘못 처리 하고 있는지 어떻게 처리하고 있는지 여쭤보니
라이브러리를 사용하고 있었고, 프론트단에서 데이터 결과물을 확인해본 결과, 합산되어 전달되어 오지 않고 있다고 하였다.

결국, 백엔드 데이터 전달을 잘못 하고 있었다...

profile
차근차근 배워나가는 주니어 개발자

1개의 댓글

comment-user-thumbnail
2022년 5월 22일

그룹바이에서도 포멧을 맞춰줘야하는 군요~ 잘 봤습니다~!

답글 달기