作者:负能量包子玻璃包各负磁场宣泄区 | 来源:互联网 | 2022-12-10 13:24
我有一个SQL查询返回类似于此伪表的数据:
| Name | Id1 | Id2 | Guid |
|------+-----+-----+------|
| Joe | 1 | 1 | 1123 |
| Joe | 2 | 1 | 1123 |
| Joe | 3 | 1 | 1120 |
| Jeff | 1 | 1 | 1123 |
| Moe | 3 | 42 | 1120 |
我想在输出上显示一个额外的列,列出与给定行匹配GUID的记录总数,如下所示:
| Name | Id1 | Id2 | Guid | # Matching |
+------+-----+-----+------+------------+
| Joe | 1 | 1 | 1123 | 3 |
| Joe | 2 | 1 | 1123 | 3 |
| Joe | 3 | 1 | 1120 | 2 |
| Jeff | 1 | 1 | 1123 | 3 |
| Moe | 3 | 42 | 1120 | 2 |
我能够通过自己加入查询并进行计数来实现这一目标.但是,查询相当大,需要一段时间才能完成,有没有办法可以在不加入查询的情况下完成此操作?
1> Gordon Linof..:
你想要一个窗口功能:
select t.*, count(*) over (partition by guid) as num_matching
from t;