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
운영게시판
최근게시물
Oracle Q&A 41582 게시물 읽기
No. 41582
30분단위로 가중치를 주고 싶은데 어떤쿼리를 짜야할까요?
작성자
aladdin
작성일
2018-06-19 09:44
조회수
4,572

00시00분 ~ 06시00분까지는 2

06시00분 ~ 22시00분까지는 1.5

22시00분 ~ 00시00분까지는 2

 

이 기준으로 계산되어야 하는데

 

문제는 시작 22시00분 종료 01시30분 이렇게 되면

하루가 넘기는 부분이라 계산이 쉽지가 않네요

 

관련쿼리 있을까요?

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

원본 샘플 자료와 그에 따른 결과표를 보여주세요.
시작 종료가 어떤 형태로 관리되는지? 어떤 자료형인지? 등등

마농(manon94)님이 2018-06-19 11:08에 작성한 댓글입니다.

데이터는

근무일자 20180619 시작 1930 종료 0230

이렇게 들어가 있구요

결과표는

근무시간 1930 2200 2.5시간 계산시간 2.5*1.5 = 3.75

근무시간 2230 0230 4시간 계산시간 4*2 = 8

 

합계 6.5시간 계산시간 11.75시간

 

이렇게 나와야 합니다.

 

aladdin님이 2018-06-19 12:22에 작성한 댓글입니다. Edit

WITH data_t AS
(
SELECT 1 idx, '20180619' dt, '1930' stm, '0230' etm FROM dual
)
, code_t AS
(
SELECT 0*60 s, 6*60 e,  2.0 v FROM dual
UNION ALL SELECT  6*60, 22*60, 1.5 FROM dual
UNION ALL SELECT 22*60, 30*60, 2.0 FROM dual
UNION ALL SELECT 30*60, 46*60, 1.5 FROM dual
)
SELECT a.idx, a.dt, a.stm, a.etm
     , SUM((LEAST(a.e, b.e) - GREATEST(a.s, b.s)) * b.v) / 60 hours
  FROM (SELECT idx, dt, stm, etm
             , SUBSTR(stm, 1, 2)*60 + SUBSTR(stm, 3, 2) s
             , SUBSTR(etm, 1, 2)*60 + SUBSTR(etm, 3, 2)
             + CASE WHEN etm < stm THEN 24*60 ELSE 0 END e
          FROM data_t
        ) a
     , code_t b
 WHERE a.s < b.e
   AND a.e > b.s
 GROUP BY a.idx, a.dt, a.stm, a.etm
;

마농(manon94)님이 2018-06-20 09:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41585조인관련해서 질문 드립니다 ㅠ [2]
김영욱
2018-06-21
4413
41584shell에서 sqlplus 접속시.. [1]
참이슬
2018-06-21
4512
41583모델링 할 때 테이블간 양방향 참조를 하기도 하나요? [4]
조동건
2018-06-19
5266
4158230분단위로 가중치를 주고 싶은데 어떤쿼리를 짜야할까요? [3]
aladdin
2018-06-19
4572
41581안녕하십니까. 오라클 샘플 데이터 생성 관련하여, 글을 올립니다.
브라움
2018-06-18
4352
41579조건에 따라 쿼리 분기시키기 [5]
PPP
2018-06-14
4939
41578GROUP BY 절의 간단한 문의 [2]
DB초보
2018-06-14
4921
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다