我有一个表,其中每一行都有数字,我希望最后一列对行中的所有数字求平均值。我该怎么做?平均值并不是针对同一标题下的列中的所有数字,而是针对行中的所有数字。每一行代表一个不同的用户,因此如果我是用户1(第一行),我希望我的平均值为(2+3+4+2+6+3)/6=3.33(显示在第1行的平均值列中)。我想在表中输入行之后选择一行,然后选择适当的条目,平均数字,然后将结果插入表的avg列,但我不知道如何用python编写代码(特别是如何选择行中的单个数字)。事先谢谢你的帮助。表结构:
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
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 ............
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;
2条答案
按热度按时间h6my8fg21#
如果您使用的是3.31.0之前的sqlite版本,那么就不能使用生成的列,这将是适合这种情况的解决方案。
在任何情况下,在表中存储计算列都不是一个好主意。
您可以创建视图或运行如下查询:
得到你想要的。
你的table需要一个
UPDATE
声明:nwlls2ji2#
只需使用生成的列:
这样,您就不必担心值与数据不同步。查询时计算。
这是一个sql小提琴。
或者,可以将计算放在视图中: