【问题标题】:Informix group by hourInformix 按小时分组
【发布时间】: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;

【问题讨论】:

    标签: datetime informix hour


    【解决方案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 做同样的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多