gpt4 book ai didi

sql - Postgres,使用列中的值将结果聚合到单行

转载 作者:行者123 更新时间:2023-12-04 10:22:39 26 4
gpt4 key购买 nike

在 Postgres 中,

我正在尝试从如下所示的表中汇总结果:

id    restaurant_id       title          category
-------------------------------------------------
1 2 pizza main
2 2 pasta main
3 2 coke drink
4 2 beer drink
5 2 fries side
6 3 chips side

我想返回这种类型的结果。
main                               drink                      side
--------------------------------------------------------------------------------------
[{id:1, title: pizza},...] [{id:3, title: coke},...] [{id:5, title: fries},...]

我需要结果只有一行,因为这是更大查询的一部分。在过去的几天里,我用我有限的 Postgres 知识尝试了很多东西,但没有设法得到任何接近我需要的东西。

一些帮助将不胜感激。

最佳答案

您可以使用条件聚合和 json 函数:

select
jsonb_agg(jsonb_build_object('id', id, 'title', title))
filter(where category = 'main') main,
jsonb_agg(jsonb_build_object('id', id, 'title', title))
filter(where category = 'drink') drink,
jsonb_agg(jsonb_build_object('id', id, 'title', title))
filter(where category = 'side') side
from mytable

Demo on DB Fiddle :

主要 |喝 |边
:------------------------------------------------- ------------ | :------------------------------------------------- ---------- | :------------------------------------------------- ------------
[{"id": "1", "title": "pizza"}, {"id": "2", "title": "pasta"}] | [{"id": "3", "title": "coke"}, {"id": "4", "title": "beer"}] | [{“id”:“5”,“title”:“薯条”},{“id”:“6”,“title”:“薯条”}]

关于sql - Postgres,使用列中的值将结果聚合到单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60778093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com