oracle如何显示前10位的总和,其余的总和,差异

时间:2016-02-27 06:55:55

标签: sql oracle

如何显示前10位的总和,其余的总和,差异

我不知道怎么做,我可以按顺序排列,但不知道下一步是什么。

我的表就像

name area
a     10
b     23
c      3
...

1 个答案:

答案 0 :(得分:0)

您需要将记录从1到N(其中N是最后一个)编号,
然后根据这些数字加上前10和其余部分。

最简单的方法是使用wor_number分析函数,有关详细信息,请参阅文档:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm

您的查询看起来像:

SELECT SUM( column_to_sum ) sum_of_all,
       SUM( CASE WHEN nbr BETWEEN 1 AND 10 THEN column_to_sum END ) as top_10,
       SUM( column_to_sum )
       - 
       SUM( CASE WHEN nbr BETWEEN 1 AND 10 THEN column_to_sum END ) difference
FROM (
     SELECT column_to_sum,
            row_number() OVER 
                 (ORDER BY expression_to_order_rows_from_top_to_bottom) nbr
     FROM table
)