繁体   English   中英

如何选择唯一的列值并显示其另一列的值的总和?

[英]How do I select a unique column value and display its sum of values of another column?

我正在尝试为PNr = 19900130的人选择NumberOfHours的总和。 我希望PNr是唯一的,但显示 PNr 列 = 19990130 和该人小时数总和的列。 有什么诀窍?

PNr         Date       NumberOfHours
----------  ----------  -----------
19990130    20200301    8
20100003    20200204    9
19990130    20200530    10
19990130    20200808    7
19990130    20200507    10
19990130    20200209    8
19990130    20200702    4
19990130    20200606    6
19990130    20201212    6
19990130    20200909    3
19990130    20200504    4
19990130    20200104    5
19990130    20180201    4
19990130    20170109    4
19990130    20160130    7
19990130    20250302    4
19990130    20180304    9
19990130    20160105    7
19990130    20190901    5
19990130    20100806    8
19990130    20201115    7
13450906    20120120    9
19990130    20010102    3
19990130    20190114    5
19990130    14220101    5
20040503    20020203    7
19000101    20170710    4

我得到的结果(这是所有小时数的总和)。 只对19990130的总小时数感兴趣的人:

select distinct PNr
              , sum(AntalTimmar) 
from Tidbok 
where PNr = 19990130 
group by PNr 
order by sum(AntalTimmar) = 1 desc;

产生:

PNr         sum(NumberOfHours)
----------  ----------------
19990130    139

我不确定您说要获得 NumberOfHours 的总和的AntalTimmar列是什么。 这是这样做的:

select pnr, sum(NumberOfHours)
from Tidbok
where pnr = '19990130';

我觉得不错: https : //www.db-fiddle.com/f/oTTpJ9tTudkFrqy1WJghZj/5

或者这就是你要找的:

select pnr, (select sum(t.NumberOfHours) from Tidbok t where t.pnr = '19990130')
from Tidbok
group by pnr;

一开始的问题不是很清楚:)

这是第二个查询的演示。

您不需要使用GROUP BY ,也不需要使用ORDER BYLIMITDISTINCT

select PNr, sum(NumberOfHours) total
from Tidbok 
where PNr = 19990130

如果您想要所有 PNR 的结果,您将使用GROUP BY
此外,由于查询仅返回 1 行,因此不需要ORDER BYLIMIT
请参阅演示
结果:

| PNr      | total |
| -------- | ----- |
| 19990130 | 139   |

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM