栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PostgreSQL错误:设置返回函数必须出现在FROM的顶层

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PostgreSQL错误:设置返回函数必须出现在FROM的顶层

你的想法对我来说不是很清楚。看来很复杂。

但是:您得到的错误:因为

jsonb_array_elements()
不仅返回一个而是多个(一组记录,所以它是一个“返回集合的函数”)。一组记录不能直接用作另一个函数的参数。这就是“最高层”的意思。这样的功能只能直接显示为
FROM
列表元素。


除此之外:这是我选择实现您的结果的方式:

演示:db
<>小提琴

仅获取

up
总和:

SELECt     sensor,    SUM((elems ->> 'result')::numeric) AS up_sum    -- 3FROM    mytable,    jsonb_array_elements(details) elems  -- 1WHERe elems ->> 'direction' = 'up'       -- 2GROUP BY sensor
  1. 将数组元素展开为每一行
  2. direction
    值过滤这些元素
  3. result
    值相加

如果要获取两个方向的和,则可以使用以下

FILTER
子句使用条件聚合:

SELECt     sensor,    SUM((elems ->> 'result')::numeric)        FILTER (WHERe elems ->> 'direction' = 'up') AS up_sum,    SUM((elems ->> 'result')::numeric)         FILTER (WHERe elems ->> 'direction' = 'down') AS down_sumFROM    mytable,    jsonb_array_elements(details) elemsGROUP BY sensor


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号