0

我有一个存储在 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

4

1 回答 1

3

点击:demo:db<>fiddle

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"
  1. store按和分组Vx
  2. 聚合函数:MIN()for date, ARRAY_AGG()for theUnits
  3. json_build_array()用于将storeVx放入一个数组
  4. 创建一个 JSON 对象并将其包装在您的结果周围
于 2020-01-08T14:13:57.277 回答