데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

쿼리쫌 부탁 합니다 ^^

쿼리쫌 ^^ 2016.11.23 08:29 Views : 2498

안녕 하세요

많은 도움을 받고 있는 메아리(쿼리쫌) 입니다.


감사 드리고요


한번더 부탁좀 드립니다.


대략 짜집기로 해서 select 문은 만들어 냈지만,

날짜와 시간에서 문제가 생깁니다


=============================================================

1 => 000 번의 id 에 대해서, 하루 하나의 레코드만 추출

2 => 255 번의 id 에 대해서, 하루 하나의 레코드만 추출

3 => 위의 1번의 결과와, 2 번의 결과를 합친다


이때 아래 2번 그림에서 보듯이 아랫쪽에는 날짜만 나오고 시간이 안나옵니다.

=============================================================

집계함수 때문인것 같은데 아시는 분께 부탁좀 드립니다.


글로써 설명하기가 너무 복잡할거 같아서, 캡쳐화면을 첨부하여 드립니다.

부탁좀 드립니다.


감사 합니다.



WITH surveydb ([site_code], [timestamp], [sensor_id], [sensor_type], sensor_value, calc_value, sensor_value2, calc_value2, etc, alert_flag, site_addr)

AS

(

SELECT '001007003001', '2015-08-29 11:51:41', '000', '3', 21403, 0.02, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-08-30 11:51:42', '000', '3', 21403, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-08-31 11:51:43', '000', '3', 21403, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-01 11:51:44', '000', '3', 21403, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-02 11:51:45', '000', '3', 21467, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-03 11:51:46', '000', '3', 21467, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-04 11:51:47', '000', '3', 21467, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-05 11:51:58', '000', '3', 21467, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 


SELECT '001007003001', '2015-09-05 11:11:48', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-08-29 11:21:41', '255', '3', 12345, 0.02, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-08-30 11:31:42', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-08-31 11:41:43', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-01 11:51:44', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-02 11:61:45', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-03 11:52:46', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-04 11:53:47', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-08-29 11:54:51', '255', '3', 12345, 0.02, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-08-30 11:55:52', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-08-31 11:56:53', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-01 11:57:54', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-02 11:58:55', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-03 11:59:56', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-04 11:31:57', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL UNION ALL 

SELECT '001007003001', '2015-09-05 11:32:58', '255', '3', 23456, 0.03, NULL, NULL, 53, 0, NULL 

),

masterdb ([site_code], [sensor_id], [begin_date], [end_date], value, [offset_eq] )

AS

(

SELECT '001007003001', '000', '2015-08-29 00:39:00', '2015-08-29 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '255', '2015-08-30 11:51:41', '2015-08-30 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-08-31 11:51:41', '2015-08-31 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '255', '2015-09-01 11:51:41', '2015-09-01 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-09-02 11:51:41', '2015-09-02 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-09-03 11:51:41', '2015-09-03 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-09-04 00:14:00', '2015-09-04 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '255', '2015-09-04 11:51:41', '2015-09-04 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-09-05 11:51:41', '2015-09-05 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-09-29 11:51:41', '2015-08-29 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-08-29 11:51:41', '2015-08-30 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-08-30 11:51:41', '2015-08-31 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-08-31 11:51:41', '2015-09-01 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-09-01 11:51:41', '2015-09-02 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-09-02 11:51:41', '2015-09-03 11:51:41', 393.74, '({v} / 100.0) - {o}' UNION ALL 

SELECT '001007003001', '000', '2015-09-05 00:15:00', '2015-09-05 11:51:41', 393.74, '({v} / 100.0) - {o}'  

)


   

   

SELECT a.*     

FROM      

(         

SELECT CONVERT(NVARCHAR, s.timestamp, 120) as timestamp, s.sensor_id as sensor, s.sensor_value as raw_value, 

s.calc_value as calc_value, o.value as offset, o.offset_eq as equation, s.etc as etc             

FROM surveydb s               

inner join          

(                            

SELECT site_code, MIN(timestamp) timestamp , sensor_id                            

FROM surveydb                             

WHERE site_code =  '001007003001'               

AND CONVERT(VARCHAR, timestamp, 23) between '2015-08-29' AND '2015-09-05'             

AND sensor_id IN ('000')              

GROUP BY site_code, CONVERT(VARCHAR, timestamp, 23) , sensor_id              

) ss              

on s.site_code = ss.site_code          

and s.timestamp = ss.timestamp          

and s.sensor_id = ss.sensor_id              

LEFT OUTER JOIN masterdb o                

ON s.site_code = o.site_code           

AND s.sensor_id = o.sensor_id           

AND o.begin_date <= s.timestamp  AND o.end_date >= s.timestamp         

) a      

union all   

select b.*      

FROM      

(          

SELECT CONVERT(VARCHAR, ss.timestamp, 23) as timestamp, ss.sensor_id , sum(s.sensor_value)  raw_value , 

sum( s.calc_value) as calc_value, sum(o.value) as offset   ,max(o.offset_eq) as equation, max(s.etc) as etc          

FROM surveydb s           

inner join surveydb   ss                   

on s.site_code = ss.site_code and s.timestamp = ss.timestamp 

and s.sensor_id = ss.sensor_id             

LEFT OUTER JOIN masterdb o                

ON s.site_code = o.site_code          

AND s.sensor_id = o.sensor_id  

AND o.begin_date <= s.timestamp           

AND o.end_date >= s.timestamp            

WHERE ss.site_code = '001007003001'         

AND CONVERT(VARCHAR, ss.timestamp, 23) between '2015-08-29' AND '2015-09-05'         

AND ss.sensor_id IN ('255')         

GROUP BY CONVERT(VARCHAR, ss.timestamp, 23), ss.sensor_id         

) b 


=====================================================================
1. 번 화면
=====================================================================
01.원본쿼리.jpg



=====================================================================
2. 번 화면
=====================================================================

02.원본결과.jpg 



=====================================================================
3. 번 화면
=====================================================================

03.가상테이블.jpg




=====================================================================
4. 번 화면
=====================================================================

04.1차.수정쿼리.jpg



=====================================================================
5. 번 화면
=====================================================================


05.1차.수정결과.jpg 






=====================================================================
6. 번 화면. 이화면은 동일한 가상테이블을 만들어서, 현상을 재현해서, 계시판에 질문 할려고 했는데
 현장 재현도 안되고 있습니다. 몇날 며칠을 삽질해도 안되네요 ㅠ
=====================================================================

06.2차.수정쿼리.jpg




=====================================================================
마지막 7. 번 화면
=====================================================================



07.2차.수정결과.jpg



No. Subject Author Date Views
9621 ms server 2000이 ms server 2008 r2 보다 휠씬 빠른데 어떻게 된 건가요? [5] 신생 2016.11.24 2806
9620 개체탐색기 로그인 계정제거 [2] 라꾸라꾸 2016.11.24 2088
9619 인덱스 다시구성 다시작성 일정 [3] 냥냥 2016.11.23 3882
9618 안녕하세요 sql입문자인데요 [2] 라라리룰 2016.11.23 2056
9617 mysql 질문 드립니다.. [3] 꼽냐™ 2016.11.23 1872
» 쿼리쫌 부탁 합니다 ^^ [6] 쿼리쫌 ^^ 2016.11.23 2498
9615 2012로 업데이트 후 프로시져 실행 에러가 발생했습니다. [1] 약도사 2016.11.22 2088
9614 DB 파일 자동 증가 관련 문의 뛰어 2016.11.22 2010
9613 쿼리 관련 문의 입니다!! DB 사용량 관련 [1] 뛰어 2016.11.22 2003
9612 특정 데이터 찾기 쿼리가 궁급합니다. [1] 진후킴 2016.11.21 1911
9611 데이터 실시간 연동 관련 문의 입니다. [4] 호짱 2016.11.21 4214
9610 DB 복제에 대해 질문 드립니다. 조형근 2016.11.21 3771
9609 TABLE 특정컬럼 결과값 확인 [2] 슬이슬이 2016.11.21 1766
9608 쿼리좀 풀어 주세요 [4] 메아리 2016.11.18 2692
9607 100만건정도의 데이터를 한페이지에 모두 뿌려주는 게 가능할까요? [2] 냥냥 2016.11.18 4064
9606 문자 치환에 대하여 질의드립니다. [1] 방혁 2016.11.17 1485
9605 쿼리 관련 문의 [2] 냥냥 2016.11.17 3048
9604 쿼리좀 구합니다 [2] 메아리 2016.11.17 2366
9603 sql 서버 관리 관련 질문 [1] 오늘도난 2016.11.17 3246
9602 쿼리좀 풀어주세요-2 [2] 메아리 2016.11.16 1982





XE Login

테스트 팝업
Close