Postgresql 为什么在临时表列上应用时会得到错误的平均值

Postgresql 为什么在临时表列上应用时会得到错误的平均值,postgresql,average,Postgresql,Average,我试图根据每条消息得到单词的平均值。body来自消息的单词计数表 这方面的一个例子就是 **message.body** ------------------- -->"aaz aae aar" -->"aaz" -->"aaz aae" 输出必须为:平均值(3+1+2)=2 为此,我一直在应用以下查询 SELECT AVG(temp.words) FROM (SELECT (array_length(string_to_array(messages.body,' '),1)

我试图根据每条
消息得到单词的平均值。body
来自
消息的单词计数

这方面的一个例子就是

**message.body**
-------------------
-->"aaz aae aar"
-->"aaz"
-->"aaz aae"
输出必须为:平均值(3+1+2)=2

为此,我一直在应用以下查询

SELECT AVG(temp.words) FROM (SELECT (array_length(string_to_array(messages.body,' '),1)) AS words FROM messages) AS temp
message.body
只是文本


任何帮助都将不胜感激。

给出您期望的结果:

t=# with messages(body) as (values('aaz aae aar'),('aaz'),('aaz aae')) SELECT AVG(temp.words) FROM (SELECT (array_length(string_to_array(messages.body,' '),1)) AS words FROM messages) AS temp;
        avg
--------------------
 2.0000000000000000
(1 row)

t=# with messages(body) as (values('aaz aae aar'),('aaz'),('aaz aae')) SELECT *FROM (SELECT (array_length(string_to_array(messages.body,' '),1)) AS words,messages.body FROM messages) AS temp;
 words |    body
-------+-------------
     3 | aaz aae aar
     1 | aaz
     2 | aaz aae
(3 rows)
我在回答我的问题: postgres中的average函数只接受float作为参数,因为有人需要先转换输入。像这样:

SELECT(AVG (temporary_.words)) AS average_amount FROM (SELECT CAST(array_length(string_to_array(messages.body,' '),1)  AS FLOAT) AS words FROM messages WHERE body!='' ) AS temporary_

请回答您的问题,并添加一些示例数据和基于该数据的预期输出。请你的问题-不要在评论中发布代码或附加信息。我很好奇有什么区别?我猜您生成的数据与我的message.body不同