繁体   English   中英

查找最大查询数(SQL Server 2016)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM