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不同