sql - 将表列(按组)转换为 json
问题描述
我有一个存储在 postgresql 上的数据集,其中每个 sku(按商店分组)都有不同的开始日期:
date sku store Units Vx
0 2019-10-01 103993.0 001 0.0 F
1 2019-10-02 103993.0 001 1.0 F
2 2019-10-03 103993.0 001 0 F
3 2019-10-04 103993.0 001 1.0 F
4 2019-10-05 103993.0 001 0 F
5 2019-10-02 103994.0 002 1.0 F
5 2019-10-03 103994.0 002 0 F
6 2019-10-04 103994.0 002 1.0 F
7 2019-10-05 103994.0 002 0.0 F
我需要将每个组转换为一个唯一的 json 文件,其中:
1- 日期栏:取第一个日期
2 - 存储和 Vx 列:它将唯一的非空值放入单个列表中
3 - 单位列:将整列作为列表返回
预期输出:
{"date":"2019-10-01", "join_store_Vx":[001, F],"Units":[0.0, 1.0, 0, 1.0, 0]}
{"date":"2019-10-01", "join_store_Vx":[002, F],"Units":[1.0, 0, 1.0, 0.0]}
我刚刚找到了使用 postgresql 函数的示例row_to_json
解决方案
SELECT
jsonb_build_object(
'date', min("date"),
'join_store_Vx', json_build_array(store, "Vx"),
'Units', json_agg("Units")
)
FROM mytable
GROUP BY store, "Vx"
store
按和分组Vx
- 聚合函数:
MIN()
fordate
,ARRAY_AGG()
for theUnits
json_build_array()
用于将store
和Vx
放入一个数组- 创建一个 JSON 对象并将其包装在您的结果周围
推荐阅读
- javascript - Cupertino 风格的窗格 Web 组件,您可以滑动到您想要的任何高度
- powerbi - 行安全级别 PowerBI
- twilio - Twilio 对话 - 如何在默认服务 API 中创建新对话
- api - “构建失败” heroku-cli : $heroku->get("apps/[my_app]/builds");
- c - 使用 void 指针在 C 中的通用链表中创建具有给定值的新节点
- github - Github Actions:仅为每个分支上的最新构建保留工件
- hadoop - hadoop mapreduce错误mapreduce_shuffle不存在
- flutter - 即使在使用 sqlite 数据库时调用 notifyListeners() 后,提供程序包也不会更新
- javascript - 按索引显示的 JavaScript 数组不起作用
- ios - 静默通知有时会触发后台获取