【发布时间】:2019-01-21 20:49:54
【问题描述】:
我正在尝试编写一个 Postgres 查询,它将以特定格式输出我的 json 数据。
JSON 数据结构
{
user_id: 123,
data: {
skills: {
"skill_1": {
"title": "skill_1",
"rating": 4,
"description": 'description text'
},
"skill_2": {
"title": "skill_2",
"rating": 2,
"description": 'description text'
},
"skill_3": {
"title": "skill_3",
"rating": 5,
"description": 'description text'
},
...
}
}
}
这就是我最终需要对数据进行格式化的方式:
[
{
user_id: 123,
skill_1: 4,
skill_2: 2,
skill_3: 5,
...
},
{
user_id: 456,
skill_1: 1,
skill_2: 3,
skill_3: 4,
...
}
]
到目前为止,我正在处理一个如下所示的查询:
SELECT
user_id,
data#>>'{skills, "skill_1", rating}' AS "skill_1",
data#>>'{skills, "skill_2", rating}' AS "skill_2",
data#>>'{skills, "skill_3", rating}' AS "skill_3"
FROM some_table
必须有更好的方法来编写我的查询。有 400+ 行和 70+ 技能。我上面的查询有点疯狂。任何指导或帮助将不胜感激。
注意事项:
- 用户根据 70 多项技能对自己进行评分
- 每个技能对象都有相同的结构
- 每个用户都根据完全相同的技能给自己打分
【问题讨论】:
-
在您的数据结构中,我缺少 user_id 字段。
-
更新:它们与数据对象处于同一级别。
标签: json postgresql object nested