select distinct type as vuln_type,
(select count(distinct repoId) from vulns
where type = vuln_type) as cnt
from vulns;
repoId | type
1 | TYPE1
1 | TYPE2
2 | TYPE2
2 | TYPE2
输出我想要
TYPE1 | 1
TYPE2 | 2
你明白我想做什么:如果type
中存在repoId
,我们将数字增加到1(记录数无关紧要,意味着有很多具有相同repoId
和type
的记录,不应影响结果)。
但我的查询不起作用(无限工作),有人可以解决吗?
答案 0 :(得分:1)
您可以使用<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="Newtonsoft.Json.dll" #>
<#@ assembly name="Newtonsoft.Json.Schema.dll" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
子句,而不必为每种类型执行子查询。该子句分解了group by
列表中每个不同值的查询结果(以及任何聚合计算):
group by