【发布时间】:2016-07-14 09:12:34
【问题描述】:
我有一个要求,我想在其中运行带有 where 子句和 group by 的 SELECT 查询。它返回几行,我想从中选择数量最少的行。
例子:
table t1:
host_name application type
host1 app1 0
host2 app2 0
host3 app4 0
host1 app5 0
host2 app6 0
host1 app7 1
host2 app8 1
在上表中,我想获取负载最少的主机。
host1 运行 app1、app5、app7。
host2 运行 app2、app6、app8。
host3 仅运行 app4。
因此 host3 的负载最少。当我运行查询时,输出应该是“host3”。只能选择 type=0 的行。
我有解决办法。但是优化了吗?有没有最好的优化方法来实现这一点?
SELECT host_name from (SELECT host_name, min(count) FROM (SELECT host_name, COUNT(*) as count FROM t1 where type=0 group by host_name) as Dup ORDER BY host_name);
提前致谢:)
【问题讨论】:
-
你总是需要 1 行吗?
-
是的,我需要一个带有主机名的单行。