首页 > 解决方案 > postgresql 中的数据格式化

问题描述

每个“user_id”都有多个具有不同“状态”值的观察值。

user_id        status         score      region
  1001         applied         700    california
  1001         pre_approved    700    california
  1001         Approved        700    california

我正在尝试做的是对每个 user_id 进行一次观察,并带有指示为“user_id”观察到哪些“状态”值的标志。

user_id    applied_ind  pre_approved_ind   Approved_ind         score      region
  1001           1                 1               1             700    california

标签: sqlpostgresqldataformat

解决方案


您可以使用条件聚合:

select user_id,
       max(1) filter (where status = 'applied') as applied_ind,
       max(1) filter (where status = 'pre_approved') as pre_approved_ind,
       max(1) filter (where status = 'approved') as approved_ind,
       score, region
from t
group by user_id, score, region;

推荐阅读