如何显示前10位的总和,其余的总和,差异
我不知道怎么做,我可以按顺序排列,但不知道下一步是什么。
我的表就像
name area
a 10
b 23
c 3
...
答案 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
)