将一列总和的值与同一表的另一列进行比较

时间:2019-10-22 06:55:09

标签: sql

我有一个包含一些列的表,我想对一列求和并将该值与其他单列值进行比较。如果第一列的总和等于另一列的最后一行,则还可以显示此差异。 例子。

表abc具有列代码val_1和val_2

code     val_1    val_2
A_1         200    100
A_1         150     50
A_1         250     25
A_1          50     650

现在,如果val_1的总和等于Val_2的最后一行“ 650”,那么如果不相等,则显示该行。

1 个答案:

答案 0 :(得分:1)

SQL表表示无序表。没有“最后一行”。

如果您有订购栏,则可以使用窗口功能:

select t.*
from (select t.*,
             sum(val_1) over (partition by code) as sum_val_1,
             row_number() over (partition by code order by <orderingcol> desc) as seqnum
      from t
     ) t
where seqnum = 1 and sum_val_1 <> val_2;

如果val_2中的最后一个值始终是最大值,那么聚合就足够了:

select code
from t
group by code
having sum(val_1) <> max(val_2);