Python 获取一行中数字的平均值SQL(Sqlite3)
我有一个表,其中每一行都有数字,我希望最后一列对行中的所有数字求平均值。我该怎么做?平均值不是针对同一标题下某列中的所有数字,而是针对该行中的所有数字。每一行代表不同的用户,因此如果我是用户1(第一行),我希望我的平均值为(2+3+4+2+6+3)/6=3.33(显示在第1行的平均值列中)。我想在输入表后选择一行,选择适当的条目,平均数字,然后将结果插入表的avg列,但我不知道如何用python编写代码(特别是如何选择行中的单个数字)。提前感谢你的帮助 表结构:Python 获取一行中数字的平均值SQL(Sqlite3),python,sql,sqlite,average,Python,Sql,Sqlite,Average,我有一个表,其中每一行都有数字,我希望最后一列对行中的所有数字求平均值。我该怎么做?平均值不是针对同一标题下某列中的所有数字,而是针对该行中的所有数字。每一行代表不同的用户,因此如果我是用户1(第一行),我希望我的平均值为(2+3+4+2+6+3)/6=3.33(显示在第1行的平均值列中)。我想在输入表后选择一行,选择适当的条目,平均数字,然后将结果插入表的avg列,但我不知道如何用python编写代码(特别是如何选择行中的单个数字)。提前感谢你的帮助 表结构: 只需使用生成的列: alter
只需使用生成的列:
alter table t add column avg6 numeric generated always as
((header1 + header2 + header3 + header4 + header5 + header6) / 6.0);
这样,您就不必担心值与数据不同步。查询时进行计算
这是一个SQL小提琴
或者,可以将计算放在视图中:
create view v_t as
select t.*,
((header1 + header2 + header3 + header4 + header5 + header6) / 6.0)
from t;
如果您使用的是SQLite 3.31.0之前的版本,则无法使用生成的列,这将是适合这种情况的解决方案。
在任何情况下,在表中存储计算列都不是一个好主意。
您可以创建视图或运行如下查询:
select *,
(
coalesce(header1, 0) + coalesce(header2, 0) + coalesce(header3, 0) +
coalesce(header4, 0) + coalesce(header5, 0) + coalesce(header6, 0)
) / 6.0 as avg_header
from tablename
where .....
得到你想要的。对于您的表,您需要一个
更新语句:
update tablename
set "Avg" = (
coalesce(header1, 0) + coalesce(header2, 0) + coalesce(header3, 0) +
coalesce(header4, 0) + coalesce(header5, 0) + coalesce(header6, 0)
) / 6.0
where ............
请使用文本重新发布表格结构。很多人就是看不到这些图像。(header1+header2+header3+header4+header5+header6)/6.0
,当这些列为空时,get更复杂谢谢戈登。但我在这方面有一个错误。RuntimeError:near“as”:语法error@jlynn . . . 它还需要始终生成的,
。仍然会得到相同的错误。是否需要按名称调用avg列?@jlynn必须使用最新版本的SQLite才能生成列。