1

这是我的 MySQL 表feedback

mysql表

我想计算每列的平均值,并将结果存储到表average中,使用 PHP 文件如下结构。

在此处输入图像描述

我正在使用查询SELECT AVG (waiting) FROM feedback来计算等待列的平均值。但是我不知道如何将此查询结果作为上述结构放入另一个表中。

使用查询时INSERT INTO average (average) SELECT AVG (waiting) FROM feedback**它只更新平均列。

请帮助我提供示例代码。

谢谢

4

3 回答 3

1

如果正确理解你,你可以这样做

INSERT INTO average (data, average)
SELECT 'waiting',      AVG (waiting)      FROM feedback UNION ALL
SELECT 'consultation', AVG (consultation) FROM feedback UNION ALL
SELECT 'preoperative', AVG (preoperative) FROM feedback 

样本输出:

| 数据 | 平均 |
--------------------------
| 等待 | 3 |
| 咨询 | 2 |
| 术前| 3 |

这是SQLFiddle演示


现在,如果您的表格中没有大量数据,feedback您可以放弃average表格并以相同的方式创建视图。因此,当您从中选择时,它们将在运行中计算,而不是维护一个平均值表

CREATE VIEW average AS 
SELECT 'waiting',   ROUND(AVG (waiting)) average FROM feedback UNION ALL
SELECT 'consultation', ROUND(AVG (consultation)) FROM feedback UNION ALL
SELECT 'preoperative', ROUND(AVG (preoperative)) FROM feedback

并使用它

SELECT * FROM average

这是SQLFiddle演示

于 2013-08-01T21:36:44.293 回答
0

您可以从每列的平均值中获取结果,然后将其插入到单独的数据库中。

您现在所做的是将其插入同一数据库中的同一列,而不是不同的列,这就是为什么它只是更新该列而不是不同的列。

INSERT 查询示例:

$query = "INSERT INTO tableName (columnName) VALUES ($averageOfColumn)";

将“tableName”替换为您要连接到的新表的名称。

将“columnName”替换为您正在使用的其他数据库中的列名。

将 '$averageOfColumn' 替换为等待列的平均值的变量。

这有帮助吗?

于 2013-08-01T21:30:08.803 回答
0

要获得这三列的平均值:

SELECT AVG(waiting),AVG(consultation),AVG(preoperative) FROM feedback;

要插入平均表,如果列名相同:

INSERT INTO average(waiting,consultation,preoperative) 
SELECT AVG(waiting),AVG(consultation),AVG(preoperative) FROM feedback
于 2013-08-01T21:41:39.767 回答