【问题标题】:Using the ROLLUP total within a query在查询中使用 ROLLUP 总计
【发布时间】:2014-06-07 02:36:40
【问题描述】:

餐桌费用:

Item | Cost
 Car |  10
 Cat |   2
 Dog |   3
 Fish|   1

是否可以在每行查询中使用总和?

SELECT Item, Cost, Cost/sum(cost) "Percent" from Costs where ...

得到:

Item | Cost | Percent
 Car |  10  | 0.625
 Cat |   2  | 0.125
 Dog |   3  | 0.1875
 Fish|   1  | 0.0625

这只是一个简单的例子。我的查询要复杂得多,所以我宁愿不进行另一次全表扫描来获得“选择总和(成本)在哪里......”。是否可以使用分组/汇总来做到这一点?

【问题讨论】:

  • 假设您的成本表有一百万行,而您的复杂查询仅过滤掉结果集的 10 行。您需要 10 行的总和还是整百万行的总和?

标签: sql oracle oracle9i


【解决方案1】:

您可以使用RATIO_TO_REPORT 函数获取比率,而无需计算总和。

SQL Fiddle

查询 1

select item,
       cost,
       ratio_to_report(cost) over () as percent
from costs

Results

| ITEM | COST | PERCENT |
|------|------|---------|
|  car |   10 |   0.625 |
|  cat |    2 |   0.125 |
|  dog |    3 |  0.1875 |
| fish |    1 |  0.0625 |

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2018-02-02
    • 1970-01-01
    • 2019-11-07
    • 2020-09-20
    • 2023-03-14
    • 2013-06-19
    相关资源
    最近更新 更多