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 4083 게시물 읽기
No. 4083
도와주세요 group by 작업시간의합, 작업시간합의평균
작성자
유보현(air23ryu)
작성일
2008-02-29 11:06
조회수
6,094

테이블을 보면


type  stime(시작시간)        etime(종료시간)

c      2008-01-09 07:20:00    2008-01-09 07:50:00

c      2008-01-05 03:40:00    2008-01-05 03:55:00

c      2008-01-05 01:25:00    2008-01-05 01:29:00

o      2008-01-04 13:20:00    2008-01-04 14:50:00

o      2008-01-03 17:20:00    2008-01-03 18:21:00

t      2008-01-02 07:20:00    2008-01-02 07:50:00

t      2008-01-02 04:12:00    2008-01-02 06:01:00


group by사용하여 type별 로 볼수있게


select type,count(*) from 테이블 group by type


결과

c   3

o   2

t    2


select substring(convert(char(24),([etime]-[stime]),120),12,8) from 테이블   <-- 시작시간~종료시간 걸린 시:분:초


결과

시:분:초 가 나옵니다.


원하는 결과값

select type,count(*),걸린시간의합, 걸린시간합의평균 from 테이블 group by type .......


type count    걸린시간의합  걸린시간합의 평균

c       3        시:분:초         시:분:초

o       2        시:분:초         시:분:초

t        2        시:분:초         시:분:초


걸린시간합의 평균은 걸린시간합/3일(혹은7일 ... 이런식으로..)


도움부탁드립니다.


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


IF OBJECT_ID('TESTAA') IS NOT NULL
 DROP TABLE TESTAA

CREATE TABLE TESTAA
(TP CHAR(1)
, STIME DATETIME
, ETIME DATETIME)
GO

INSERT INTO TESTAA (TP, STIME, ETIME)
 SELECT TP = 'C', STIME = '2008-01-09 07:20:00', ETIME = '2008-01-09 07:50:00' UNION ALL
 SELECT TP = 'C', STIME = '2008-01-05 03:40:00', ETIME = '2008-01-05 03:55:00' UNION ALL
 SELECT TP = 'C', STIME = '2008-01-05 01:25:00', ETIME = '2008-01-05 01:29:00' UNION ALL
 SELECT TP = 'O', STIME = '2008-01-04 13:20:00', ETIME = '2008-01-04 14:50:00' UNION ALL
 SELECT TP = 'O', STIME = '2008-01-03 17:20:00', ETIME = '2008-01-03 18:21:00' UNION ALL
 SELECT TP = 'T', STIME = '2008-01-02 07:20:00', ETIME = '2008-01-02 07:50:00' UNION ALL
 SELECT TP = 'T', STIME = '2008-01-02 04:12:00', ETIME = '2008-01-02 06:01:00'

 

SELECT
 TYPE = TP
 , CNT = CT
 , WORK_TIME = CAST(L_HH AS VARCHAR) + '시간 ' + CAST(L_MM AS VARCHAR) + '분 ' + CAST(L_SS AS VARCHAR) + '초'
 , AVG_TIME = CAST(AVG_HH AS VARCHAR) + '시간 ' + CAST(AVG_MM AS VARCHAR) + '분 ' + CAST(AVG_SS AS VARCHAR) + '초'
FROM
(
 SELECT
  TP
  , CT = COUNT(*)
  , LT = SUM(DATEDIFF(SS, STIME, ETIME)) 
  , L_HH = SUM(DATEDIFF(SS, STIME, ETIME))  / 3600
  , L_MM = (SUM(DATEDIFF(SS, STIME, ETIME)) % 3600 ) / 60
  , L_SS = ((SUM(DATEDIFF(SS, STIME, ETIME)) % 3600 ) % 60) / 60
  , AVG_LT = AVG(DATEDIFF(SS, STIME, ETIME))
  , AVG_HH = AVG(DATEDIFF(SS, STIME, ETIME)) / 3600
  , AVG_MM = (AVG(DATEDIFF(SS, STIME, ETIME)) % 3600) / 60
  , AVG_SS = ((AVG(DATEDIFF(SS, STIME, ETIME)) % 3600) % 60) / 60
 FROM
  TESTAA
 GROUP BY TP
) Q

.님이 2008-02-29 12:06에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4086컬럼 정보를 가져오는 쿼리 맞는지 확인좀 부탁드려요
라스트파스칼
2008-03-02
4014
4085세로 데이터를 가로 테이블로 통계내려고 하는데요 [1]
장병주
2008-02-29
5233
4084선입선출(FIFO)마일리지에 대한 테이블 질문.
허양민
2008-02-29
4463
4083도와주세요 group by 작업시간의합, 작업시간합의평균 [1]
유보현
2008-02-29
6094
4082like 검색시 '[' 에 무언가 있나요?? [4]
감자
2008-02-29
5113
4081저장프로시저 작성후에요~
김송희
2008-02-28
3358
4080현재시간 getdate() 를 얻어올 때 [2]
뾰로롱~
2008-02-27
4094
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다