3

我有一个如下所示的 MySQL 表:

id  load_transit    load_standby
1   40              20
2   30              15        
3   50              10

我需要做以下计算:

load_transit_mean = (40+30+50)/3 = 40
load_standby_mean = (20+15+10)/3 = 15
total_mean = (40+15)/2 = 27.5

是否可以在单个查询中执行此操作?最好的设计是什么?

我需要我的答案是可扩展的(真正的设计有更多的行和列),并且能够处理一些包含 NULL 的行。

4

1 回答 1

6

我相信这会做到:

SELECT AVG(Load_transit)
     , AVG(load_standby)
     , (AVG(Load_transit) + AVG(load_standby))/2.0
FROM table

AVG()函数处理 NULL 的原因是它忽略它们,如果您希望将 NULL 行计入分母中,您可以AVG()SUM()over替换COUNT(*),即:

   SUM(load_transit)/COUNT(*)

关于可扩展性,像上面那样手动列出它们可能是最简单的解决方案。

于 2013-06-26T15:48:55.700 回答