不同值的计数

时间:2015-09-05 18:27:08

标签: sql distinct

我在这里阅读了许多关于计算不同值的帖子,但找不到合适的解决方案。 在工作中,我创建了一个连接到数据库的Openoffice电子表格,如下所示:

packID  Date    Surname  Name   Substance A   Substance B     Substance C

1     5.9.2015  Doe      John            50            50             100
2     5.9.2015  Parker   Peter           25            30             60
3     5.9.2015  Doe      John            15            80             20
4     5.9.2015  Doe      John            40            20             140
5     5.9.2015  Johnson  Jack            80            50             10
6     5.9.2015  Black    James           15            35             20

这是一个例子,我希望看到这样的结果:

Surname   Name     TotalVolume   Count

Black     James            70       1
Doe       John             200      2
Doe       John             115      1
Johnson   Jack             140      1
Parker    Peter            115      1

总体积由三种物质(A + B + C)组成。我很乐意为每一个建议。提前谢谢。

1 个答案:

答案 0 :(得分:3)

在子查询中计算TotalVolume,然后使用Surname,Name和TotalVolume进行分组。

<强> SqlFiddleDemo

SELECT Surname, Name, TotalVolume, COUNT(*) AS Count
FROM (
SELECT Surname, Name, Substance_A + Substance_B + Substance_C AS TotalVolume
FROM tab) AS t
GROUP BY Surname, Name, TotalVolume

或者没有子查询:

SELECT 
  Surname,
  Name,
  Substance_A + Substance_B + Substance_C AS TotalVolume,
  COUNT(*) AS Count
FROM tab
GROUP BY
  Surname,
  Name,
  Substance_A + Substance_B + Substance_C