postgresql - Postgresql 以多列分组聚合
问题描述
如何将此表聚合为单行 json 对象?
有这样的要求:
select
tb.book_id,
json_agg(json_build_object('id', t.id, 'name', t.name, 'likes', tb.likes) order by tb.likes desc) as tags
from
tags_books as tb
join
tags as t on tb.tag_id = t.id
where
tb.book_id = 2
group by
tb.book_id
结果:
[{"id" : 2, "name" : "Для взрослых", "likes" : 3}, {"id" : 3, "name" : "Приключения", "likes" : 2}, {"id" : 1, "name" : "Экшн", "likes" : 1}, **{"id" : 4, "name" : "Комедия", "likes" : 1}, {"id" : 4, "name" : "Комедия", "likes" : 1}**]
我几乎得到了我想要的,但我需要以某种方式将两个标签聚合在一起(最后一行'Комедия')并获得喜欢的总和。
结果应该是这样的:
[{"id" : 2, "name" : "Для взрослых", "likes" : 3}, {"id" : 3, "name" : "Приключения", "likes" : 2}, {"id" : 1, "name" : "Экшн", "likes" : 1}, {"id" : 4, "name" : "Комедия", "likes" : **2**}]
解决方案
推荐阅读
- json - JDE AIS 日期查询格式
- r - 使用 R 将四次核热图转换为大多边形
- python-3.x - InvalidSchema("没有为 {!r} 找到连接适配器".format(url))
- firebase - 未定义的类“FirebaseUser”,即使在更改它之后,FirebaseAuth.instance 中的 iget 错误
- laravel - 澄清 Laravel 队列中的 afterCommit
- visual-studio-code - vscodce 的 IntelliSense 不适用于“:”作为片段的前缀
- flutter - 用于 Web 服务的 Flutter 格式说明符
- spring-boot - 无法使用自定义身份验证入口点更改响应。弹簧靴
- locking - 为专用 Actor 锁定消息队列
- pandas - Pandas 根据每列趋势绘制多条线