如何使用SQL计算父器官统计数据

时间:2016-12-22 02:43:28

标签: sql db2

最近,我正在研究数据,以便为公司创建报告,这是SQL新手。

我有儿童器官的原始数据,同时,我还需要计算它的父母器官的总量。

我使用完全外连接将所有器官放在一个表中,添加一列" parent_organ"表明他们的关系,如图所示:

enter image description here

我有时会使用下面的SQL查询,但失败了,任何人都可以帮忙吗?感谢。

 SELECT ORGAN,
    SUM(CASE WHEN parent_organ LIKE '%'||ORGAN||'%' THEN 
            sales 
        ELSE 0 END) AS sales_sum  
 FROM table GROUP BY organ

1 个答案:

答案 0 :(得分:0)

Postgres我假设,||串联?从完整的外部联接行集:

SELECT organ, sales FROM test WHERE parent IS NOT NULL
UNION
SELECT a.organ, sum(b.sales)
FROM test a
JOIN test b ON b.parent LIKE '%'||a.organ||'%'
GROUP BY a.organ;

这显然不是很好,因为它会使您的原始连接变得多余:它运行两个查询并简单地将结果推送到一起。如果没有完整的外连接并编辑每个查询以从原始源获取数据,你会更好。

我不认为你提供的设置有更好的方法。如果父子关系是一个正确的外键,你可能会从原始表中获得GROUPING SETS的某个位置,但这不适用于您正在进行的字符串匹配。