【问题标题】:PHP script that can calculate average of columns in MySQL database可以计算MySQL数据库中列的平均值的PHP脚本
【发布时间】:2017-02-05 08:33:17
【问题描述】:

我需要一些关于如何编写我的 php 脚本的帮助,以便它可以找到 mysql 数据库中六列的平均值并将新结果存储在 mysql 数据库中的新列中。

例如

MSQL 数据库具有以下列

 Name    EXAM1       EXAM2     EXAM3    EXAM4    EXAM5

然后将以下记录输入到数据库中

 Name    EXAM1       EXAM2     EXAM3    EXAM4    EXAM5


Eric     10          20        10        20       10

然后PHP脚本会生成这个结果

 Name    EXAM1       EXAM2     EXAM3    EXAM4    EXAM5     AVERAGE


Eric     10          20        10        20       10         14

这样在 MYSQL 数据库中,记录将像 PHP 脚本结果一样显示。

有什么帮助吗?

谢谢。

【问题讨论】:

标签: php mysql database


【解决方案1】:

你可以直接用 SQL 来做

UPDATE yourTable set AVERAGE = (EXAM1+EXAM2+EXAM3+EXAM4+EXAM5)/5;

或者如果你像这样定义你的表,你会自动生成 AVERAGE:

CREATE TABLE yourTable (
  title VARCHAR(32) DEFAULT NULL,
  exam1 DOUBLE,
  exam2 DOUBLE,
  exam3 DOUBLE,
  exam4 DOUBLE,
  exam5 DOUBLE,
  average DOUBLE GENERATED ALWAYS AS ((exam1 + exam2 + exam3 + exam4 + exam5) / 5 ) STORED
);

样本

mysql> CREATE TABLE yourTable (
    ->   title VARCHAR(32) DEFAULT NULL,
    ->   exam1 DOUBLE,
    ->   exam2 DOUBLE,
    ->   exam3 DOUBLE,
    ->   exam4 DOUBLE,
    ->   exam5 DOUBLE,
    ->   average DOUBLE GENERATED ALWAYS AS ((exam1 + exam2 + exam3 + exam4 + exam5) / 5 ) STORED
    -> );
Query OK, 0 rows affected (0,02 sec)

mysql> INSERT INTO yourTable (title, exam1, exam2, exam3, exam4, exam5)
    -> VALUES('test1',1,1,22,33,44),('Test2',333,24,11,45,97);
Query OK, 2 rows affected (0,00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql>
mysql> SELECT * FROM yourTable;
+-------+-------+-------+-------+-------+-------+---------+
| title | exam1 | exam2 | exam3 | exam4 | exam5 | average |
+-------+-------+-------+-------+-------+-------+---------+
| test1 |     1 |     1 |    22 |    33 |    44 |    20.2 |
| Test2 |   333 |    24 |    11 |    45 |    97 |     102 |
+-------+-------+-------+-------+-------+-------+---------+
2 rows in set (0,00 sec)

mysql>

【讨论】:

  • 感谢您的帮助。但是,当我尝试按照您上面提供的代码进行操作时出现此错误。 == #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 8 行的“GENERATED ALWAYS AS ((exam1 + Exam2 + Exam3 + Exam4 + Exam5) / 5 ) STORED ) 附近使用正确的语法
  • 你安装了哪个版本select version();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 2010-11-25
  • 2017-07-07
  • 2016-03-03
相关资源
最近更新 更多