我有一个名为Table1的表,其定义如下。
Id int False
Source nvarchar(MAX) True
Dest nvarchar(MAX) True
Port nvarchar(MAX) True
DgmLen nvarchar(MAX) True
Flags nvarchar(MAX) True
Payload nvarchar(MAX) True
现在我要打印此表的所有行,其中" source"计数大于10。
首先,我使用此查询来获取表中的源数:
Select Source,count(*) t_count from Table1 group by Source
它已经获取了以下数据:
Source t_count
2-170.125.32.3 1
2-172.125.32.10 1
2-190.125.32.10 11
2-190.125.32.3 1
2-192.125.32.10 1
2-192.125.32.3 6
现在我要打印所有行" Source = 2-190.125.32.10"因为它的t_count大于10。
如何在单一查询中撰写此内容。
答案 0 :(得分:0)
有"来源= 2-190.125.32.10"
关键字:having
:
Select Source,count(*) t_count from Table1 group by Source HAVING t_count > 10
和btw:如果你是通过Soruce进行分组 - 那么总会有一个结果行,它与某些源相匹配 - 这就是分组的重点。
答案 1 :(得分:0)
如果我找对你,那么: -
select * from Table1 where Source in
(
Select Source from Table1 group by Source having count(*) > 10
)
这会返回Table1
列值出现超过10次的Source
行中的所有行。
编辑: -
select * from Table1 t1 join
(Select Source, Dest from Table1 group by Source, Dest having count(*) > 10) t2
on t1.Source = t2.Source and t1.Dest = t2.Dest
此处,表t2返回出现超过10次的Source, Dest
组合,并将其与基表Table1
连接。
答案 2 :(得分:0)
您的单个查询应该是这样的
Select Source,count(*) t_count from Table1 group by Source HAVING t_count > 10
类似EXAMPLE制作
答案 3 :(得分:0)
Select
s.Source,
s.Dest,
s.Port,
s.DgmLen,
s.Flags,
s.Payload
from Table1 s
join
(
select
source,
count(*) as tot
from Table1
group by source
having tot > 10
)s1
on s1.source = s.source