SELECT 
  player_id,
  -- 使用 CASE WHEN 实现条件判断：超过 1000 万重置为 200 万，否则保留原数值
  CASE 
    WHEN (data->>'exp_pool')::bigint > 10000000  -- 判断是否超过 1000 万
    THEN 2000000::bigint  -- 超过则重置为 200 万，统一为 bigint 类型避免类型不一致
    ELSE (data->>'exp_pool')::bigint  -- 未超过则保留原 bigint 数值
  END AS online_time
FROM "player_info"
-- 保留 jsonb_exists 函数判断字段存在，避免占位符冲突
WHERE 
  jsonb_exists(data, 'exp_pool')
  AND (data->>'exp_pool')::bigint > 0  -- 此处仍保留原判断，过滤大于 0 的数据
-- 按修正后的 online_time 降序排序
ORDER BY online_time DESC;