2015-09-05 82 views
1

我在这里阅读了很多关于计算不同值的帖子,但找不到合适的解决方案。 在工作中我创建了一个电子表格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)。我很乐意接受每一个建议。提前致谢。

+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