python—获取行中数字的平均值sql(sqlite3)

sigwle7e  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(541)

我有一个表,其中每一行都有数字,我希望最后一列对行中的所有数字求平均值。我该怎么做?平均值并不是针对同一标题下的列中的所有数字,而是针对行中的所有数字。每一行代表一个不同的用户,因此如果我是用户1(第一行),我希望我的平均值为(2+3+4+2+6+3)/6=3.33(显示在第1行的平均值列中)。我想在表中输入行之后选择一行,然后选择适当的条目,平均数字,然后将结果插入表的avg列,但我不知道如何用python编写代码(特别是如何选择行中的单个数字)。事先谢谢你的帮助。
表结构:

h6my8fg2

h6my8fg21#

如果您使用的是3.31.0之前的sqlite版本,那么就不能使用生成的列,这将是适合这种情况的解决方案。
在任何情况下,在表中存储计算列都不是一个好主意。
您可以创建视图或运行如下查询:

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 .....

得到你想要的。
你的table需要一个 UPDATE 声明:

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 ............
nwlls2ji

nwlls2ji2#

只需使用生成的列:

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;

相关问题