在select的msql – velocity中计算公式

你能帮我算一个速度,通过select我的SQL:速度根据这个:

在这里输入图像说明

我的数据库看起来如下:

在这里输入图像说明

MySQLselect如下所示:

$sql = "SELECT SUM(value) FROM project_has_tasks WHERE project_id='10' GROUP BY milestone_id ASC"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "" . $row["SUM(value)"]. ","; } } $conn->close(); 

project_id = '10'的结果如下所示:

50,20,15

好。 这很简单,但有没有可能使用上面的速度公式在MySQLselect或somwhere其他(PHP?)所以结果采取公式:

在这里输入图像说明

应该看起来像这样:

50,35,28.3

任何帮助?

由于MySQL不支持CTE,你可以分两步build立一个查询。 首先,获取每个milestonevalues的总和,查询就像您已经写过的那个

 SELECT milestone_id, SUM(value) FROM project_has_tasks WHERE project_id='10' GROUP BY milestone_id 

然后你自己join上面的查询

 select t1.milestone_id, sum(t2.val) / count(t2.val) from ( SELECT milestone_id, SUM(value) val FROM project_has_tasks WHERE project_id='10' GROUP BY milestone_id ) t1 join ( SELECT milestone_id, SUM(value) val FROM project_has_tasks WHERE project_id='10' GROUP BY milestone_id ) t2 on t1.milestone_id <= t2.milestone_id group by t1.milestone_id order by t1.milestone_id desc 

你可以在这里看到它的行动