![](/img/trans.png)
[英]In standard SQL, how do I select rows such that for each unique value in one column, all of the values in another column are a specified value?
[英]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 BY
和LIMIT
或DISTINCT
:
select PNr, sum(NumberOfHours) total
from Tidbok
where PNr = 19990130
如果您想要所有 PNR 的结果,您将使用GROUP BY
。
此外,由于查询仅返回 1 行,因此不需要ORDER BY
和LIMIT
。
请参阅演示。
结果:
| PNr | total |
| -------- | ----- |
| 19990130 | 139 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.