当数据行中的某一列包含类似于a,b,c,...
的数据,并且你想计算该列中值的均值,可以使用SQL中的字符串函数和聚合函数来实现。下面是一个示例SQL查询,展示了如何计算该列的均值,同时保持其他列不变:
SELECT column1, column2, column3, ..., (
SELECT AVG(CAST(split_part(column_with_values, ',', idx) AS INTEGER))
FROM generate_series(1, regexp_count(column_with_values, ',')+1) AS idx
) AS average_value
FROM your_table;
SELECT column1, column2, column3, ..., (
SELECT AVG(CAST(split_part(column_with_values, ',', idx) AS FLOAT))
FROM generate_series(1, regexp_count(column_with_values, ',')+1) AS idx
) AS average_value
FROM your_table;
在上面的示例中,你需要替换以下内容:
column1, column2, column3, ...
:代表你的表中的其他列。column_with_values
:代表包含a,b,c,...
数据的列。your_table
:代表你的表名。
该查询使用了以下函数和操作:
split_part(column_with_values, ',', idx)
:这个函数将字符串按逗号分隔,并返回指定索引位置(idx
)上的值。CAST(... AS INTEGER)
:将字符串转换为整数类型,以便进行聚合操作。generate_series(1, regexp_count(column_with_values, ',')+1)
:生成一个序列,用于迭代并获取每个值的索引。AVG()
:计算均值。
该查询在每行中计算了列值的均值,并将结果作为新的average_value
列返回,同时保持其他列不变。
请注意,上述示例假设列中的数据是逗号分隔的整数列表,例如1,2,3,4
。如果数据格式不同,你可能需要根据实际情况进行适当的修改。