我有以下查询,它为每个服务器提取最大和平均cpu和内存值。
SELECT
Nodes.Caption, Max(CPULoad.MaxLoad) as CPUMax,
AVG(CPULoad.AvgLoad) as CPUAvg,
Round(Max(CPULoad.MaxMemoryUsed / CPULoad.TotalMemory * 100),2) as MemMax,
Round(AVG(CPULoad.AvgPercentMemoryUsed),2) as MEMAvg
FROM
Nodes
INNER JOIN
CPULoad ON Nodes.NodeID = CPULoad.NodeID
WHERE
Datetime >= DATEADD(MONTH,datediff(MONTH,0,getdate())-1,0)
AND Datetime < DATEADD(MONTH,datediff(MONTH,0,getdate()),0)
GROUP BY Nodes.Caption
现在我需要弄清楚以下内容。
以下范围之间的每个值(cpumax,cpuavg,memmax,memavg)的计数:
我试过像SUM(case when Max(CPULoad.MaxLoad) < 10 then 1 else 0 end
这样的东西但我一直收到错误
不能在GROUP BY子句列表中用于组的表达式中使用聚合或子查询
我尝试在max(cpuload.maxload)
中添加整个语句和GROUP BY
,但它不喜欢它。
最后,我需要按特定范围对每个服务器进行分组。即所有服务器的cpumax都在0到10之间,以及它们对应的值。
答案 0 :(得分:1)
尝试使用以下查询..尚未经过测试:)
# rpm -q php-cli php-fpm
php-cli-5.6.25-1.el6.remi.x86_64
php-fpm-5.6.25-1.el6.remi.x86_64
# which php
/usr/bin/php
# php -v
PHP 5.6.25 (cli) (built: Aug 31 2016 19:26:19)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
# rpm -qf /usr/sbin/php
error: file /usr/sbin/php: No such file or directory
答案 1 :(得分:0)
通过将现有查询作为带有别名的子查询,使其成为派生表。然后使用案例构造。这是一般的想法。您可以填写详细信息。
select case when 1 = 1 then 'true' else 'false' end alias1
from
(your query goes here) alias2