database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7089 게시물 읽기
No. 7089
sql 입니다. 꼭 부탁 드려요...
작성자
도와주세요
작성일
2017-08-29 17:25
조회수
2,483

안녕하세요..

많은 도움 받고 있습니다.

 

다름이 아니라... 시간 차를 구하고 싶어요...

 

start end_time

----- -------

23:00 03:00

01:00 07:00

07:00 02:00

18:00 23:00

 

위 데이터를 이용해서.. 심야 시간이 타임이 22:00 ~ 06:00 라고 할 때

start 와 end_time 의 시간 구간이 심야 시간 타임에 들어 갈 때 그 시간의 합을 시간단위로

구하고 싶어요...

도저희 답이 않나와서.. 문의 드립니다.

혹 힌트라도 얻을 수 있을까요?

제발 부탁 드려요.. ㅜㅜ

이 글에 대한 댓글이 총 1건 있습니다.

WITH t AS
(
SELECT 1 id, '23:00' start_time, '03:00' end_time
UNION ALL SELECT 2, '01:00', '07:00'
UNION ALL SELECT 3, '07:00', '02:00'
UNION ALL SELECT 4, '18:00', '23:00'
UNION ALL SELECT 5, '09:00', '18:00'
)
SELECT id, start_time, end_time
     , SUM( CASE WHEN a.e < b.e THEN a.e ELSE b.e END
          - CASE WHEN a.s > b.s THEN a.s ELSE b.s END
          ) mi
  FROM (SELECT id, start_time, end_time
             , CASE WHEN lv = 2 THEN 0 ELSE s END s
             , CASE WHEN lv = 2 THEN e WHEN s > e THEN 24*60 ELSE e END e
          FROM (SELECT id, start_time, end_time
                     , LEFT(start_time, 2) * 60 + RIGHT(start_time, 2) s
                     , LEFT(  end_time, 2) * 60 + RIGHT(  end_time, 2) e
                  FROM t
                ) a
         INNER JOIN
               (SELECT 1 lv UNION ALL SELECT 2) b
            ON lv <= CASE WHEN s > e THEN 2 ELSE 1 END
        ) a
  LEFT OUTER JOIN
       (SELECT 0 s, 6*60 e UNION ALL SELECT 22*60, 24*60) b
    ON a.s < b.e
   AND a.e > b.s
 GROUP BY id, start_time, end_time
;

마농(manon94)님이 2017-09-01 09:44에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7092페이징 쿼리 입니다. 찾다 찾다 그냥 만들었습니다 [2]
박성재
2017-09-08
2604
7091MSSQL2008 DB를 Paradox파일로 백업하는 쿼리가 있나요?
김우성
2017-09-03
2416
7090오라클의 sys_connect_by_path 함수 변환 [1]
초보
2017-08-30
3164
7089sql 입니다. 꼭 부탁 드려요... [1]
도와주세요
2017-08-29
2483
7088다른유형의 레코드형태를 어떻게 빨리 조회할 수 있을까요?
권순환
2017-08-23
2375
7087row 를 늘리기 도움 부탁드립니다. [4]
개발자
2017-08-23
2601
7086group by가 안되는것 같아요 [2]
김우성
2017-08-17
2374
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다