【问题标题】:How to Average column on bottom of query如何平均查询底部的列
【发布时间】:2013-01-23 19:59:49
【问题描述】:

忽略'?DATE1::?',它只是用户输入日期范围的前缀。

Select
       STARTDATEKEY 
       round(avg(Minutes),2) as Time  /*average for 1 day */
from   Table
where To_Date(to_char(StartDate, 'DD-MON-YYYY')) >= To_Date('?DATE1::?','MM/DD/YYYY')
and To_Date(to_char(RESTOREDDATETIME, 'DD-MON-YYYY')) <= To_Date('?DATE2::?','MM/DD/YYYY')
and FLAG = 0
group by STARTDATEKEY 

输出将是

我需要帮助显示 20130110 52.67

底部时间列的平均值

编辑/审稿人注意:我不知道应该标记 Oracle 还是 SQL。

【问题讨论】:

    标签: sql oracle oracle10g oracle11g


    【解决方案1】:

    您可以使用ROLLUP 分组功能。
    应该是这样的:

    Select
           STARTDATEKEY 
           round(avg(Minutes),2) as Time  /*average for 1 day */
    from   Table
    where To_Date(to_char(StartDate, 'DD-MON-YYYY')) >= To_Date('?DATE1::?','MM/DD/YYYY')
    and To_Date(to_char(RESTOREDDATETIME, 'DD-MON-YYYY')) <= To_Date('?DATE2::?','MM/DD/YYYY')
    and FLAG = 0
    group by ROLLUP(STARTDATEKEY)
    

    Here is a simplified sqlfiddle demo

    【讨论】:

    • 感谢@gustavodidomenico,但由于 OP 使用的是oracle,因此最好参考 oracle 文档...
    • 嗨,感谢您提供强大的功能和链接,但如果我使用 System.Data.ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints. at System.Data.DataTable.EnableConstraints() at System.Data.DataTable.set_EnforceConstraints(Boolean value) at
    • @Mowgli:你如何使用结果?您是否尝试将它们插入到表中并强制执行部分或全部约束?从演示中可以看出,汇总行的 STARTDATEKEY 列中将具有 NULL。还是该错误与您所询问的查询真的相关?
    • @AndriyM 感谢这个问题,我找到了问题,但没有找到解决方案。我通过 SQLPLUS 直接向 Oracle 运行并测试了ROLLUP,它在那里工作(运行查询),但它不适用于我编写查询的软件,它是我在其中编写查询的特殊软件(它会给我带来错误我粘贴在上面,如果其中有汇总),它将发布在 html/aspx 网页上。还有其他选择我必须平均时间列吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-01-20
    • 2013-06-04
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    相关资源
    最近更新 更多