통계쿼리 질문입니다. 0 9 881

by ckdtm [MySQL] 통계 주차별 [2017.09.13 09:32:50]


select receipt_no, week(receipt_date), receipt_date from reception_information where receipt_date between '2015-01-01' and '2015-04-01';

이 쿼리를 실행하면 

receipt_no week(receipt_date) receipt_date
2015xxx 1 2015-01-08
2015xxx 11 2015-03-17
2015xxx 11 2015-03-19
2015xxx 12 2015-03-22

이런 식으로 나옵니다.

저기서 week(receipt_date)를 컬럼으로 쓰고 싶은데 어떻게 해야 하나요?

예를 들어

사용자 지역 1주차 2주차 3주차 4주차 5주차 6주차 총합
국내 전체 12345 12345 12345 12345 12345 12345 74070
해외 전체 321 321 321 321 321 321 1926
총합 전체 12666 12666 12666 12666 12666 12666 151992

이런식으로 나오게 하고 싶습니다 가능 한가요?

by 김용한 [2017.09.13 09:35:58]

raw데이터에 사용자, 지역 데이터값 컬럼이 없네요 


by jkson [2017.09.13 09:40:19]

컬럼으로 쓰고 싶다는 게 무슨 말씀이시죠?

컬럼 명칭을 지정하시고 싶다는 건가요?

select receipt_no as 접수번호, week(receipt_date) as 주차, receipt_date as 접수일자
from reception_information
where receipt_date between '2015-01-01' and '2015-04-01';

 


by ckdtm [2017.09.13 09:50:00]

핸드폰으로 쓰는거라 이해해주세요

퀴리문에서 week(receipt_no)의 결과값으로 1,11,12 이 나오는거를 밑에표 1주차 2주차 여기에 넣고 싶은 겁니다.


by 우리집아찌 [2017.09.13 10:14:44]

receipt_no의 로우가 주차별로 되어있나요?

중간에 없는 주차도 존재하나요?

조회조건은요?

주차는 다이나믹하게 늘어나나요? 


by ckdtm [2017.09.13 10:33:13]

receipt_no의 row는 datetime이고

날짜를 선택하면 그날짜에 해당하는 receipt_date를 주차별로 나누고 count(receipt_no) 를 값으로 가져야 합니다.

주차는 최대 15주까지 선택 가능하게 하려고 합니다.


by 마농 [2017.09.13 10:43:55]
SELECT IFNULL(loc, '총합') 지역
     , COUNT(CASE w WHEN  1 THEN 1 END)  "1"
     , COUNT(CASE w WHEN  2 THEN 1 END)  "2"
       -- 중간 생략 --
     , COUNT(CASE w WHEN 53 THEN 1 END) "53"
     , COUNT(*) 총합
  FROM (SELECT loc
             , week(receipt_date) w
          FROM reception_information
         WHERE receipt_date BETWEEN '2015-01-01' AND '2015-04-01'
        ) a
GROUP BY loc
 WITH ROLLUP
;

 


by 사나마나 [2017.09.15 14:14:36]

혹시 지정한 날짜에 대해서만

count(case~when~then~end) ""

이 컬럼이 나올수는 없나요?


by 마농 [2017.09.15 14:40:26]

그 부분은 프로그램에서 동적 으로 구현하셔야 합니다.


by 사나마나 [2017.09.15 15:01:55]

아 그렇군요...

그리고 하나더 여쭤볼께 있는데 위에 댓글 보고 수정하여 쿼리를 실행 하다보니 시간이 많이 걸리던데 시간을 줄일수 있는 방법이 있을까요?

데이터가 많아서 그런건 알지만 20분 정도 걸리는것 같아요

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입