所以我有一个表调用命令,例如在这个表中我有这些值
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)
答案 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
分组