sql - 根据连接查找服务器状态查询
问题描述
我这里有这张桌子
create table servers
(
id integer not null,
server_name varchar not null,
connections integer not null,
unique(id),
unique(server_name)
);
我想写一个查询来计算服务器状态。因此,使用id
,server_named
并status
显示为我想要 2 个选项的结果OK
或OVERLOAD
基于以下的状态:
如果服务器的连接数超过所有服务器的平均连接数,则该服务器超载。
你能帮我弄清楚如何解决这个问题吗?我尝试了很多解决方案,但找不到解决问题的最佳方法。
我是新来的查询,如果这是一个简单的问题,请原谅我。
先感谢您。
解决方案
这是一个带有示例的解决方案,因此它可以帮助您理解解决方案:
SELECT id,
server_name,
CASE
WHEN (connections <= (SELECT AVG(connections) FROM servers)) then 'OK'
ELSE 'OVERLOAD'
END AS status
FROM servers ORDER By id;
所以我在这里做的是选择 id、server_name 和一个状态,这是这个查询中的一种情况,所以如果连接数小于或等于AVG()
连接数,那么这将返回OK
,否则将返回OVERLOAD
例子:
ID | 服务器名称 | 连接 |
---|---|---|
1 | 服务器_1 | 3 |
2 | 服务器_2 | 0 |
3 | 服务器_3 | 6 |
4 | server_4 | 3 |
结果如下:
ID | 服务器名称 | 地位 |
---|---|---|
1 | 服务器_1 | 好的 |
2 | 服务器_2 | 好的 |
3 | 服务器_3 | 超载 |
4 | server_4 | 好的 |
注意这里是 server_3 超载,因为它大于 avg 是 3 (3+0+6+3)/4 = 3
。
希望这将帮助您弄清楚如何解决此问题。
推荐阅读
- angularjs - 在 Angular.js 上的 HTML5 Canvas 中的背景图像上绘制一个矩形
- c# - 将图像保存到数据库中的重复项
- c++ - 如何在 C++ 中声明 std::bind 的 std::invoke_result?
- java - 如何链接不同类的两个对象?
- algorithm - 我如何从数学上计算这个算法的时间复杂度?
- flutter - 可访问性不会在颤动中读取一些文本如何解决?
- android - 借助 Android 在 Tensorflow 上创建一个简单的神经网络
- ruby-on-rails - 如何在rails中为has_many编写每个循环?
- python - 在 Python 中使用进程共享对象时收到 SIGINT 后如何防止 BrokenPipeErrors?
- javascript - 随 SRC 变化的动态纵横比