시간대별 조회 쿼리 질문 드립니다. 0 4 918

by 콜트라인 MSSQL [2017.10.20 15:30:45]


안녕하세요. 눈팅만 하다가.

질문이 있어서 글을 남깁니다..

 

제가 만들고 있는 프로그램이

 

테이블

         savedate                          A1        B2         A4

2017-09-20 17:42:46.343                1         2           3

2017-09-20 17:52:46.343                2         3           4

2017-09-20 18:02:46.343                3         4           5

2017-09-20 18:12:46.343                4         4           5

2017-09-20 18:24:46.343                3         3           3

이런식으로 테이블이 되어있어 있는데 조회할떄

      시간            A1

16:00 ~ 17: 00      3

17:00 ~ 18:00     10

이런식으로 조회 하고 싶은데. 어떤 방법이 있나요 도움좀 부탁드리겠습니다,

 

 

 

by 우리집아찌 [2017.10.20 16:13:11]

DBMS는 MS-SQL 인가요?


by 콜트라인 [2017.10.20 16:16:01]

넵 MS SQL 입니다.


by jkson [2017.10.20 16:29:47]
with t as
(
select convert(datetime,'2017-09-20 17:42:46.343') savedate, 1 a1 union all
select convert(datetime,'2017-09-20 17:52:46.343'), 2 union all
select convert(datetime,'2017-09-20 18:02:46.343'), 3 union all
select convert(datetime,'2017-09-20 18:12:46.343'), 4 union all
select convert(datetime,'2017-09-20 18:24:46.343'), 3
)
select format(savedate,'HH') + ':00~'
     + format(dateadd(hour,1,savedate),'HH')+':00' tm
     , sum(a1) a1
  from t
 group by format(savedate,'HH'), format(dateadd(hour,1,savedate),'HH')

그런데 시간대로 보면

17:00~18:00

18:00~19:00

가 맞는 것 아닌가요?


by 우리집아찌 [2017.10.20 16:54:51]

WITH T (savedate , A1 , B2 , A4 ) AS (
SELECT CONVERT(DATETIME,'2017-09-20 17:42:46.343',120)  , 1 , 2 , 3  UNION ALL
SELECT CONVERT(DATETIME,'2017-09-20 17:52:46.343',120)  , 2 , 3 , 4  UNION ALL
SELECT CONVERT(DATETIME,'2017-09-20 18:02:46.343',120)  , 3 , 4 , 5  UNION ALL
SELECT CONVERT(DATETIME,'2017-09-20 18:12:46.343',120)  , 4 , 4 , 5  UNION ALL
SELECT CONVERT(DATETIME,'2017-09-20 18:24:46.343',120)  , 3 , 3 , 3  
)


SELECT SUBSTRING(DD, 9,2) + ':00' + '~' + SUBSTRING(DD, 9,2) + ':59' , A1
  FROM ( SELECT FORMAT(savedate,'yyyyMMddhh') DD , SUM(A1) A1
		  FROM T 
		 WHERE SAVEDATE BETWEEN CONVERT(DATETIME,'2017-09-20') AND CONVERT(DATETIME,'2017-09-20') + 0.99999999  
		 GROUP BY FORMAT(savedate,'yyyyMMddhh')
		) A

 

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