ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

使用聚合函数报错Could not choose a best candidate function

使用聚合函数报错Could not choose a best candidate function

文章目录

  • 环境
  • 症状
  • 问题原因
  • 解决方案

环境

系统平台:N/A
版本:5.6.5,4.3.4,4.7.7

症状

使用聚合函数报错如下:

highgo=# select sum('1');ERROR:functionsum(unknown)isnotunique1selectsum('1');^提示: Couldnotchoose a best candidatefunction.You might needtoaddexplicittypecasts.highgo=# select avg('1');ERROR:functionavg(unknown)isnotunique1selectavg('1');^提示: Couldnotchoose a best candidatefunction.You might needtoaddexplicittypecasts.

问题原因

在 HGDB 中聚合函数只允许 SMALLINT、 INT、 BIGINT、 REAL、 DOUBLE PRECISION、 NUMERIC、 INTERVAL数据类型,或者通过::转义为以上类型。

解决方案

方法一:

highgo=# select sum(1);sum-----1(1行记录)highgo=# select avg(1);avg------------------------1.00000000000000000000(1行记录)

方法二:

highgo=# select sum('1'::int);sum-----1(1行记录)highgo=# select avg('1'::NUMERIC);avg------------------------1.00000000000000000000(1行记录)
返回列表