You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中repeat函数报错及重复计算优化问题咨询

问题解决:PostgreSQL中repeat函数报错与重复计算优化

报错原因

PostgreSQL的repeat函数要求第二个参数为整数类型,而ceil(avg(rating)::numeric(10,2))返回的是numeric类型,类型不匹配导致报错。之前尝试转换为text/varchar无效,因为核心问题是参数需要整数而非字符串。

重复计算优化

原查询中avg(rating)::numeric(10,2)重复计算4次,可通过CTE(公共表表达式)预先计算一次平均评分,后续所有字段直接引用该结果,减少重复计算开销。

优化后的完整查询

WITH rating_stats AS (
  SELECT avg(rating)::numeric(10, 2) AS avg_rating
  FROM person_rating
)
SELECT
  round(avg_rating, 2) AS rating_averaged,
  ceil(avg_rating)::integer AS rating_rounded_up,
  concat(
    repeat('★', ceil(avg_rating)::integer),
    repeat('☆', 5 - ceil(avg_rating)::integer)
  ) AS rating_as_stars
FROM rating_stats;

结果说明

执行上述查询后,将得到期望结果:

{
    "rating_averaged": 3.25,
    "rating_rounded_up": 4,
    "rating_as_stars": "★★★★☆"
}

内容的提问来源于stack exchange,提问作者Mike K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:27:23