如何在SQL DB2中求和

时间:2013-06-08 20:56:12

标签: sql

所以我有一个表调用命令,例如在这个表中我有这些值

   name    volume    price
1- Cisco    300       27
2- Cisco    150       26
3- Cisco     50       26

我正在尝试使用此查询:

select o.name, sum(o2.volume), o.price
from orders o, orders o2
where o.price <= o2.price
group by o.name, o.price

但是这个查询会返回:

   name    volume    price
1- Cisco    300       27
2- Cisco    200       26

但我希望得到这样的结果:

   name    volume    price
1- Cisco    300       27
2- Cisco    500       26

第二行应该是销售额的总和: 销售价格较高(1)+所有销售额的总和,价格较低(2 + 3)

2 个答案:

答案 0 :(得分:0)

没有内置函数来获取上一行,但是您可以对数据进行排序并使用窗口函数来获取row_number(),然后使用case语句。

ROW_NUMBER() OVER告诉DB2你想如何编号的行。如果您选择公司名称,将其告知ROW_NUMBER() OVER (ORDER BY PRICE DESC)将具有最高PRICE的行为#1,第二高的行为#2等。

我建议你查看documentation,然后回过头来看看你到目前为止所做的一些事情,以便我们从那里开始。

答案 1 :(得分:0)

我明白了,所以我这样做了:

选择 o.name, (从订单o2中选择总和(o2.volume)                 其中o2.price&lt; = o.price                        和o2.name = o.name), ,o.price 来自订单o 按o.name,o.price

分组