You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按user_id统计各字段是否存在至少一条approved记录?

问题描述

我有一张名为user_due_diligence的表,结构包含user_id、cellphone、national_id、postal_code字段,现有数据如下:

user_idcellphonenational_idpostal_code
5approvedin_progressin_progress
5in_progressapprovednot_investigated
5approvednot_investigatednot_investigated

需要按user_id分组,每个user_id仅返回一行记录,各字段用1表示该字段存在至少一条approved记录,用0表示不存在。期望结果如下:

user_idcellphonenational_idpostal_code
5110

已知需要用到group by user_id和case when x = "approved"语句,但不清楚具体语法,请问该如何实现?

解决方案

可以结合GROUP BY和聚合函数MAX()来实现需求,用CASE WHEN判断字段是否存在approved记录,再通过聚合函数提取最终的标识值。具体SQL语句如下:

SELECT
    user_id,
    MAX(CASE WHEN cellphone = 'approved' THEN 1 ELSE 0 END) AS cellphone,
    MAX(CASE WHEN national_id = 'approved' THEN 1 ELSE 0 END) AS national_id,
    MAX(CASE WHEN postal_code = 'approved' THEN 1 ELSE 0 END) AS postal_code
FROM user_due_diligence
GROUP BY user_id;

语句说明:

  • CASE WHEN 字段 = 'approved' THEN 1 ELSE 0 END:对每条记录的对应字段做判断,值为approved就标记1,否则标记0。
  • MAX()聚合函数:按user_id分组后,只要分组内有至少一个1(即该字段存在过approved记录),MAX()就会保留1;如果全是0,就返回0,刚好匹配“存在至少一条approved则为1,否则为0”的要求。
  • GROUP BY user_id:保证每个用户只在结果中出现一行。

内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:10:36