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