sql查询按类别总和

时间:2016-09-19 17:42:44

标签: sql

我有一个表结构,如下所示。 每个工具都有一个家庭。每个工具都可以与几个家庭相关。每个家庭都可以拥有多种工具。

| Tool  | Family  | TPT  |
--------------------------------------
| ToolA | FamilyA | TPT1 |
| ToolA | FamilyB | TPT2 |
| ToolA | FamilyC | TPT3 |
| ToolB | FamilyA | TPT4 |
| ToolB | FamilyB | TPT5 |
| ToolC | FamilyB | TPT6 |
| ToolD | FamilyD | TPT7 |

我想总结TPT列,如下面的结果所示 -

| Family  | TPT            |
------------------
| FamilyA | TPT2+TPT3+TPT5 |
| FamilyB | TPT1+TPT3+TPT4 |
| FamilyC | TPT1+TPT2      |
| FamilyD | 0              |

结果说明 - FamilyA有ToolA和ToolB。 ToolA与FamilyB(TPT2),FamilyC(TPT3)和FamilyA本身有关。 ToolB与FamiltyA本身和FamilyB(TPT5)有关。因此,FamilyA的TPT是TPT2 + TPT3 + TPT5。 FamilyB,FamilyC也是如此。 FamilyD只有ToolD。 ToolD与其他家庭无关。因此,FamilyD的TPT为0。 我如何编写一个sql查询,根据上面指定的表结构检索这些结果?

2 个答案:

答案 0 :(得分:0)

希望它能为你效果,因为我没有测试过它:

el.setAttribute('look-controls', {enabled: false})

答案 1 :(得分:0)

这是另一个更精确的一个:

SELECT t1.family, coalesce(SUM(t2.tpt),0)
FROM t t1
LEFT JOIN t t2
ON t1.tool = t2.tool
AND t1.family <> t2.family
GROUP BY t1.family

在这里测试:http://sqlfiddle.com/#!9/a0dca/7