我有一個Postgres DB,里面有模板和響應的表,每個模板定義了它有多少行和項目,響應將項目放在行中。我希望能夠查詢任何模板的所有響應的“平均”位置的合并響應。
template_post
response_post
在這種情況下,查詢應該返回以下合并的響應:
{
"filled_rows": [
{
"row_id": 0,
"item_ids": [1]
},
{
"row_id": 2,
"item_ids": [2]
},
{
"row_id": 4,
"item_ids": [0,3]
}
]
}
在出現(xiàn)歧義的情況下,當一個項目在多行中出現(xiàn)相同次數(shù)時,應將其放在這些行中的第一行。
這里需要一些聚合級別。
filled_rows
和item_ids
分解為單獨的行。item_id
聚合,取最小值row_id
。row_id
進行聚合,并獲取item_ids
的JSON數(shù)組。db<>fiddle