SQL为所有“孩子”的总和

时间:2013-09-13 20:13:45

标签: sql group-by sum

为预算帐户创建一个表格,我的层次结构存储在"路径"列如此:

  • groceries.produce.vegetables.tomatoes
  • groceries.produce.vegetables.potatoes
  • groceries.produce.fruit
  • groceries.baking.flour

当我需要抓住所有产品时效果很好,因为我可以做一个

  

LIKE'产生。%'

在树中查询并获取它下面的任何内容。

但是,对于任何给定的查询,我希望有一个"总计"列总结所有记录的价格"在"。

之下

我能想到的唯一方法是在GROUP BY上进行模式匹配,但我有预感,我可能会走错路。

我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:4)

您可以使用相关子查询执行此操作:

select t.*,
       (select sum(prices)
        from t t2
        where t2.path like t.path || '.%'
       ) as SumBeneath
from t;

一件事。 '.%'是将所有内容放在下面,不包括t中的当前行。如果要包含当前行,请删除句点。