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

PostgreSQL如何按app_count排名选取每个distinct user_id对应的行

实现思路

你可以通过PostgreSQL内置的窗口函数ROW_NUMBER()实现需求,核心逻辑是按user_id分组后对每组的app_count做倒序排序,取每组排名第一的记录即可。

具体查询语句

请将SQL中的你的实际表名替换为你自己的表名:

WITH ranked_data AS (
    SELECT
        user_id,
        sum,
        app_id,
        app_count,
        -- 按user_id分组,组内按app_count从高到低排序生成序号
        ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY app_count DESC) AS rank_num
    FROM 你的实际表名
)
-- 过滤得到每个user_id对应的app_count最高的记录
SELECT user_id, sum, app_id, app_count
FROM ranked_data
WHERE rank_num = 1;

补充说明

如果同一个user_id下存在多个app_count同为最大值的行、你需要全部保留的话,把ROW_NUMBER()替换为RANK()即可,当前需求下用ROW_NUMBER()刚好匹配你给出的期望结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:36:02