Mysql return 统计信息中每个 VM 的总容量 table
Mysql return total capacity for each VM in stats table
我有一个 table,其中包含 215 个虚拟机的数据行。每行有以下信息 VM 名称、日期戳、磁盘、容量、吞吐量、iops 等
每个虚拟机将有一个或多个磁盘,这意味着对于每个日期戳,每个虚拟机的每个日期戳可能有不止一行数据。
我需要的是每个 VM 的总磁盘容量的结果。我从哪个日期戳获取数据并不重要,因为每个日期戳通常都保持不变。但是,并非所有 VM 在每个日期戳期间都存在。
这就是我尝试过的方法。
查询尝试 1:
SELECT DISTINCT `VM`, SUM(CapacityGB) as cap FROM stats Group By `VM`
这里的问题是我得到了每个 VM 的结果,但不是单个日期戳的容量总和,而是该 VM 的所有日期戳的总和,这意味着容量很高
查询尝试 2:
SELECT DISTINCT `VM`,`datestamp`, SUM(CapacityGB) as cap FROM stats Group By `VM`,`datestamp`
此查询为我提供了正确的容量结果,但我得到了每个 VM 的每个日期戳的一行(我有 215 个虚拟机,它 returns 394701 行,因为我在 10 个虚拟机上有大约 2 周的统计数据分钟间隔)
所以我想要的是混合的,每个 VM 有 1 行结果。有什么指点吗?
你可以将你的第二个查询包装成一个子查询和 select cap
的 MAX
值(应该与其他任何一个相同),分组依据VM
:
SELECT VM, MAX(cap)
FROM (SELECT `VM`,`datestamp`, SUM(CapacityGB) as cap
FROM stats
GROUP BY `VM`,`datestamp`) s
GROUP BY VM
我有一个 table,其中包含 215 个虚拟机的数据行。每行有以下信息 VM 名称、日期戳、磁盘、容量、吞吐量、iops 等
每个虚拟机将有一个或多个磁盘,这意味着对于每个日期戳,每个虚拟机的每个日期戳可能有不止一行数据。
我需要的是每个 VM 的总磁盘容量的结果。我从哪个日期戳获取数据并不重要,因为每个日期戳通常都保持不变。但是,并非所有 VM 在每个日期戳期间都存在。
这就是我尝试过的方法。
查询尝试 1:
SELECT DISTINCT `VM`, SUM(CapacityGB) as cap FROM stats Group By `VM`
这里的问题是我得到了每个 VM 的结果,但不是单个日期戳的容量总和,而是该 VM 的所有日期戳的总和,这意味着容量很高
查询尝试 2:
SELECT DISTINCT `VM`,`datestamp`, SUM(CapacityGB) as cap FROM stats Group By `VM`,`datestamp`
此查询为我提供了正确的容量结果,但我得到了每个 VM 的每个日期戳的一行(我有 215 个虚拟机,它 returns 394701 行,因为我在 10 个虚拟机上有大约 2 周的统计数据分钟间隔)
所以我想要的是混合的,每个 VM 有 1 行结果。有什么指点吗?
你可以将你的第二个查询包装成一个子查询和 select cap
的 MAX
值(应该与其他任何一个相同),分组依据VM
:
SELECT VM, MAX(cap)
FROM (SELECT `VM`,`datestamp`, SUM(CapacityGB) as cap
FROM stats
GROUP BY `VM`,`datestamp`) s
GROUP BY VM