错误:函数avg(布尔值)不存在

joa*_*avf 6 sql postgresql

我试图知道事件发生的频率,并且通过将布尔值设置为"TRUE"并且非出现将其设置为"FALSE"来记录我的数据库中此事件的出现.

但是,当我尝试使用函数avg()选择值时,它返回我的错误:错误:函数avg(布尔值)不存在

如何衡量事件频率并在某个时间保持良好的性能?

谢谢.

若昂

jir*_*ira 8

你可以这样做:

AVG(CASE WHEN  myBooleanAttribute = TRUE THEN 1 ELSE 0 END)
Run Code Online (Sandbox Code Playgroud)

  • AVG(当myBooleanAttribute那么1 ELSE 0 END时也可以) (2认同)

nat*_*e c 7

这会将值强制转换为0和1

select avg(val::int);
Run Code Online (Sandbox Code Playgroud)

  • 我相信@Chris.Caldwell 的回应更有用。 (2认同)

Chr*_*ell 5

如果你转换为 int 你会得到一个 int 平均值,这不是很有用。而是尝试:

select avg(val::int::float4);
Run Code Online (Sandbox Code Playgroud)