[英]Find max count of query (SQL Server 2016)
Q1:如何获得每个虚拟机的NIC数量? 例如
virtualMachine1 2
virtualMachine2 3
virtualMachine3 1
virtualMachine4 2
Q2:如何获得代表任何虚拟机的最大NIC数量的值? 例如
10
以下查询返回所有虚拟机网卡对:
SELECT VirtualMachine.VirtualMachineName, VMToNetwork.MacAddress
FROM VirtualMachine
INNER JOIN VMToNetwork
ON VirtualMachine.VirtualMachineID = VMToNetwork.VirtualMachineID
ORDER BY VirtualMachine.VirtualMachineName
字段“ VMToNetwork.MacAddress”仅用于说明联接有效。
该查询尝试计算每个虚拟机的NIC数量,但只是将NIC的总数相加即可。
SELECT count( VMToNetwork.MacAddress )
FROM VirtualMachine
INNER JOIN VMToNetwork
ON VirtualMachine.VirtualMachineID = VMToNetwork.VirtualMachineID
谢谢。
添加group by子句,它将计算每个计算机名称唯一的值:
SELECT VirtualMachine.VirtualMachineName, count( VMToNetwork.MacAddress )
FROM VirtualMachine
INNER JOIN VMToNetwork
ON VirtualMachine.VirtualMachineID = VMToNetwork.VirtualMachineID
GROUP BY VirtualMachine.VirtualMachineName
要获取每个VM的NIC数量,必须按VM名称分组:
SELECT VirtualMachine.VirtualMachineName, count(VMToNetwork.MacAddress) as NICCount
FROM VirtualMachine
INNER JOIN VMToNetwork ON VirtualMachine.VirtualMachineID = VMToNetwork.VirtualMachineID
GROUP BY VirtualMachine.VirtualMachineName
要从中获得最大收益,您可以按NICCount排序并获得最高价:
SELECT TOP 1 VirtualMachine.VirtualMachineName, count(VMToNetwork.MacAddress) as NICCount
FROM VirtualMachine
INNER JOIN VMToNetwork ON VirtualMachine.VirtualMachineID = VMToNetwork.VirtualMachineID
GROUP BY VirtualMachine.VirtualMachineName
ORDER BY NICCount
请注意,在平局中,您只会得到一名平局成员。
如果只需要最大NIC数,也可以使用子查询:
SELECT MAX(T1.NICCount)
FROM (
SELECT count(VMToNetwork.MacAddress) as NICCount
FROM VirtualMachine
INNER JOIN VMToNetwork ON VirtualMachine.VirtualMachineID = VMToNetwork.VirtualMachineID
GROUP BY VirtualMachine.VirtualMachineName
) as T1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.