15 lines
705 B
Go
15 lines
705 B
Go
|
|
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;
|