SQL 表示所有“子项”的总和



为预算帐户做一个表,我的层次结构存储在"路径"列中,如下所示:

  • 杂货.农产品.蔬菜.西红柿
  • 杂货、农产品、蔬菜、土豆
  • 杂货.农产品.水果
  • 杂货.烘焙.面粉

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

喜欢"生产.%"

查询并获取树下的任何内容。

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

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

任何建议将不胜感激。

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

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

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

相关内容

最新更新