情况是这样的
有个表:
1:业务名称(varchar) ; 2:等待时长(int) ;3:办理时长(int); 4:日期(datetime)
表中字段和数据如下
====================================================
业务名称;等待时长;办理时长;日期;
业务A 0 268 2010-09-01
业务A 240 294 2010-09-01
业务B 0 326 2010-09-01
业务B 323 237 2010-09-01
业务C 0 590 2010-09-01
业务C 587 204 2010-09-01
业务A 0 604 2010-09-02
业务A 601 363 2010-09-02
业务B 0 1492 2010-09-02
业务B 1488 300 2010-09-02
业务C 0 360 2010-09-02
业务C 951 420 2010-09-02
业务A 540 120 2010-09-03
业务A 640 600 2010-09-03
。
。
。
我想等到每个业务的,每一周的最大等待时长和最大办理时长 ,如何写sql语句???
===================================================================================
参考:
统计每天的每个业务的最大等待时长和最大办理时长的sql语句:
select
业务名称 ,
max(等待时长) max_waittime ,
max(办理时长) max_worktime ,
时间
from 表
where 日期 between '2009-9-1' and '2010-9-11 23:59:59'
group by 日期,业务名称 order by 日期
有个表:
1:业务名称(varchar) ; 2:等待时长(int) ;3:办理时长(int); 4:日期(datetime)
表中字段和数据如下
====================================================
业务名称;等待时长;办理时长;日期;
业务A 0 268 2010-09-01
业务A 240 294 2010-09-01
业务B 0 326 2010-09-01
业务B 323 237 2010-09-01
业务C 0 590 2010-09-01
业务C 587 204 2010-09-01
业务A 0 604 2010-09-02
业务A 601 363 2010-09-02
业务B 0 1492 2010-09-02
业务B 1488 300 2010-09-02
业务C 0 360 2010-09-02
业务C 951 420 2010-09-02
业务A 540 120 2010-09-03
业务A 640 600 2010-09-03
。
。
。
我想等到每个业务的,每一周的最大等待时长和最大办理时长 ,如何写sql语句???
===================================================================================
参考:
统计每天的每个业务的最大等待时长和最大办理时长的sql语句:
select
业务名称 ,
max(等待时长) max_waittime ,
max(办理时长) max_worktime ,
时间
from 表
where 日期 between '2009-9-1' and '2010-9-11 23:59:59'
group by 日期,业务名称 order by 日期
业务名称 ,
max(等待时长) max_waittime ,
max(办理时长) max_worktime ,
时间
from 表
where 日期 between '2009-9-1' and '2010-9-11 23:59:59'
group by DATENAME(wk,日期),业务名称
order by 日期
select
业务名称 ,
max(等待时长) max_waittime ,
max(办理时长) max_worktime ,
DATENAME(wk,日期) 周数
from 表
where 日期 between '2009-9-1' and '2010-9-11 23:59:59'
group by DATENAME(wk,日期),业务名称
order by 日期
请看以上的帖子,希望可以给你帮助
业务名称 ,
datepart(wk,日期) 周
max(等待时长) max_waittime ,
max(办理时长) max_worktime
from 表
where convert(varchar(10),日期,120) between '2009-09-01' and '2010-09-11'
group by 业务名称,datepart(wk,日期)
order by 业务名称 , 周
6楼同志,上面的“120” 是代表什么意思呢?
---------------------------------------------
其实 4楼的chen8410同志,已经基本上差不多了
标准
输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM
就是将时间转成 yyyy-mm-dd 的字符形式,convert是需要资源的,不需要就不用,确实4楼的基本上查不多了,有那么一点点不严谨,严谨的写法:where 日期>='2009-9-1' and 日期<'2010-9-12'4楼的写法会漏掉59.x秒的数据
http://msdn.microsoft.com/zh-cn/library/ms187928%28v=SQL.100%29.aspx
call.oname oname ,
max(call.waittime) max_waittime ,
max(call.worktime) max_worktime ,
DATENAME(wk,call.dd) dddfrom
(
SELECT A.oid oid,
A.oname oname,
A.wname wname ,
DATEDIFF(minute, A.getdate,A.calldate) waittime ,
DATEDIFF(minute, A.calldate,A.finishdate) worktime ,
A.predate dd
FROM callinfo A where predate between '2010-9-1' and '2010-9-11 23:59:59') call
group by DATENAME(wk,dd),oname order by DATENAME(wk,dd)
----------------------------------------------------------------------
等待时长通过getdate和calldate的差值得到,
办理时长通过calldate和finishdate的差值得到;
功能:统计每个业务的每一周的最大等待时长和最大办理时长;
原始表中的必需字段要有:oname,getdate,calldate,predate;