Informix 按小时分组
Posted
技术标签:
【中文标题】Informix 按小时分组【英文标题】:Informix group by hour 【发布时间】:2012-06-29 21:06:58 【问题描述】:如何在 Informix 中使用带小时的 group by 子句?
这里的group by section会报错:
SELECT
cqdr.targetid,
cqdr.profileid,
ccdr.startdatetime::DATETIME HOUR TO HOUR AS CallHour,
Count(cqdr.sessionid),
(Sum(cqdr.queuetime) / Count(cqdr.sessionid)),
Max(cqdr.queuetime)
FROM Contactqueuedetail cqdr, Contactcalldetail ccdr, Selected_csqs sc
WHERE cqdr.sessionid = ccdr.sessionid AND
cqdr.sessionseqnum = ccdr.sessionseqnum AND
cqdr.profileid = ccdr.profileid AND
cqdr.nodeid = ccdr.nodeid AND
ccdr.startdatetime BETWEEN DATE('12/6/27') AND DATE('12/6/28') AND
--cqdr.targettype = l_typecsq AND
cqdr.targetid = sc.csqrecordid AND
cqdr.profileid = sc.profileid
GROUP BY ccdr.startdatetime::DATETIME HOUR TO HOUR, cqdr.targetid, cqdr.profileid;
【问题讨论】:
【参考方案1】:要按派生列分组,请使用 GROUP BY 序号位置语法:
SELECT cqdr.targetid,
cqdr.profileid,
ccdr.startdatetime::DATETIME HOUR TO HOUR AS CallHour,
Count(cqdr.sessionid),
(Sum(cqdr.queuetime) / Count(cqdr.sessionid)),
Max(cqdr.queuetime)
FROM ...
WHERE ...
GROUP BY 1, 2, 3
【讨论】:
看起来虽然您可以 ORDER BY 表达式甚至显示标签(选择列表中的列别名),但您不能对 GROUP BY 做同样的事情。以上是关于Informix 按小时分组的主要内容,如果未能解决你的问题,请参考以下文章