这是我的 MySQL 表feedback
。
我想计算每列的平均值,并将结果存储到表average
中,使用 PHP 文件如下结构。
我正在使用查询SELECT AVG (waiting) FROM feedback
来计算等待列的平均值。但是我不知道如何将此查询结果作为上述结构放入另一个表中。
使用查询时INSERT INTO average (average) SELECT AVG (waiting) FROM feedback
**它只更新平均列。
请帮助我提供示例代码。
谢谢
如果正确理解你,你可以这样做
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演示
您可以从每列的平均值中获取结果,然后将其插入到单独的数据库中。
您现在所做的是将其插入同一数据库中的同一列,而不是不同的列,这就是为什么它只是更新该列而不是不同的列。
INSERT 查询示例:
$query = "INSERT INTO tableName (columnName) VALUES ($averageOfColumn)";
将“tableName”替换为您要连接到的新表的名称。
将“columnName”替换为您正在使用的其他数据库中的列名。
将 '$averageOfColumn' 替换为等待列的平均值的变量。
这有帮助吗?
要获得这三列的平均值:
SELECT AVG(waiting),AVG(consultation),AVG(preoperative) FROM feedback;
要插入平均表,如果列名相同:
INSERT INTO average(waiting,consultation,preoperative)
SELECT AVG(waiting),AVG(consultation),AVG(preoperative) FROM feedback