rickykise
40
2018-05-17 23:04:07 작성 2018-05-17 23:06:21 수정됨
0
170

mysql 증가폭 구하기 질문이요!


테이블에 있는 view_cnt, reply_cnt, like_cnt를 order by asc로 정렬해서

a 에는 한시간전 데이터를 select 하고 b에는 원래 리스트를 select 하여

24시간으로 나누어 증가폭을 구하고 싶습니다. 현재 쿼리는 증가폭이 구해지긴 하는데

초기 데이터, 즉 제일 오래된 데이터가 속해있는 24시간은 맨처음데이터에서 없는 데이터를 빼려고하니

값이 안나옵니다.. 그래서 검색해서 select ''as 'sns_content',''as 'writeDate',''as 'createDate' ,0 as 'view_cnt', 0 as 'reply_cnt', 0 as 'like_cnt' from dual union all

추가하면 임의 행이 생긴다고 해서 넣어봤더니 초기 데이터 앞에 임의 행이 생겨 잘 돌아가는데 두번째 날 조회할땐 임의 행이 필요없는데 쿼리를 돌릴때마다 임의 행이 생겨 이번엔 또 두번째 날 24시간 데이터 구하는곳에서 하나씩 밀립니다..

말로 설명하자니 어렵네요..

쉽게 말하자면 00:00:00 ~ 23:00:00 데이터를 조회하려는 첫번째 수집한 날에는 15:00:00부터 수집하였다고 가정하에 14:00:00 데이터가 없어서 15시 데이터를 빼지를 못한다는 말입니다..

if문을 써서 가장 오랜된 행앞에 임의 행을 한번만 추가하는 방법이 있을까요??



select

f.sns_content as sns_content, f.writeDate as writeDate, f.createDate as createDate, abs(f.view_cnt) as view_cnt, abs(f.reply_cnt) as reply_cnt, abs(f.like_cnt) as like_cnt

from

(select 

b.sns_content, b.writeDate, b.createDate, (b.view_cnt-a.view_cnt) as view_cnt, (b.reply_cnt-a.reply_cnt) as reply_cnt, (b.like_cnt-a.like_cnt) as like_cnt

from

(select @RNUM:=@RNUM+1 AS ROWNUM, sns_content, writeDate, createDate, view_cnt, reply_cnt, like_cnt 

        from (SELECT @RNUM:=0) R,

        

        (select ''as 'sns_content',''as 'writeDate',''as 'createDate' ,0 as 'view_cnt', 0 as 'reply_cnt', 0 as 'like_cnt' from dual

        union all 

        select 

  sns_content, writeDate, createDate, IFNULL(view_cnt, view_cnt), reply_cnt, like_cnt

from 

facebook_videos 

where

url = 'https://www.facebook.com/CJCGV/videos/2118061408267099/'

and 

createDate >=date_add('2018-05-15 23:00:00', interval -1 day) 

and 

createDate <= '2018-05-15 23:59:59'

order 

by createDate asc)c) a,

        

        (select @RNUM1:=@RNUM1+1 AS ROWNUM, sns_content, writeDate, createDate, view_cnt, reply_cnt, like_cnt 

        from (SELECT @RNUM1:=0) R,

        

        (select sns_content, writeDate, createDate, view_cnt, reply_cnt, like_cnt  

        from 

facebook_videos 

where 

url = 'https://www.facebook.com/CJCGV/videos/2118061408267099/' 

        and 

createDate >='2018-05-15 00:00:00' 

and 

createDate <='2018-05-15 23:59:59' order by createDate asc)d) b

where a.rownum = b.rownum) f; 

0
0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.