数据库MYSQL总和和平均自动化

时间:2018-09-30 11:05:54

标签: mysql sql

我有一个表名Student,如图所示

please click here to view image as i do not have permission to post image directly till now.

当我输入主题的标记值时,我想自动在它们的相应列中自动显示合计和平均,如果我想通过使用查询手动在合计和平均列中插入值,应该显示错误。

2 个答案:

答案 0 :(得分:1)

根据数据样本,应为每个参数添加值,并将结果除以arsg的数量

select  RollNo
        , Name
        , STD
        , Mobile_no
        , physics
        , Chemstry
        , Maths
        , Hindi
        , English
        , ( physics+ Chemstry+ Maths+Hindi+ English) as Total
        ,  ( physics+ Chemstry+ Maths+Hindi+ English) / 5 as  average
from my_table  

答案 1 :(得分:1)

如果您的mysql版本支持生成的列,则可以使用此功能。如果您尝试插入到生成的列,则Mysql将引发错误。例如。

drop table if exists t;
create table t(id int, s1 int,s2 int, total int as (ifnull(s1,0)+ifnull(s2,0)));

insert into t(id,s1,s2) values (1,10,20);
Query OK, 1 row affected (0.03 sec)
insert into t(id,s1,s2,total) values (2,20,null,5);
ERROR 1906 (HY000): The value specified for computed column 'total' in table 't' ignored

select * from t;
+------+------+------+-------+
| id   | s1   | s2   | total |
+------+------+------+-------+
|    1 |   10 |   20 |    30 |
+------+------+------+-------+
1 row in set (0.00 sec)

通常,尽管您不应该存储可以计算的项目。另请注意ifnull测试。您的问题并不在于所有主题是否都有价值,因此您应该对合计和取平均值的可能性进行编码。