ITPub博客

首页 > 数据库 > 国内数据库 > 南大通用GBase 8a数据库窗口函数实现分组取记录

南大通用GBase 8a数据库窗口函数实现分组取记录

原创 国内数据库 作者:GBASE南大通用 时间:2026-07-23 11:33:20 0 删除 编辑

文章配图-1

ROW_NUMBER() 是南大通用GBase 8a数据库(gbase database)支持的窗口函数之一,为结果集的每一行分配一个连续唯一序号。配合 PARTITION BY 分组和子查询过滤,可以轻松实现"取每个分组中最新/最大的一条记录"——这在传统写法中需要复杂的自连接才能实现。

使用示例

-- 场景:查询每个用户最近一次登录的记录

-- 准备数据CREATE TABLE user_login (user_id INT,login_time DATETIME,ip_addr VARCHAR(50));

-- 核心写法:用 ROW_NUMBER() 按用户分组、按时间倒序编号SELECT user_id, login_time, ip_addrFROM (SELECT user_id,login_time,ip_addr,ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_time DESC) AS rnFROM user_login) tWHERE rn = 1;

三种排名函数对比

文章配图-1

注意:窗口函数不能直接放在 WHERE 子句中,必须先在子查询中计算,外层再过滤。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3176563/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
GBASE南大通用,致力于成为用户最信赖的数据库产品供应商!

注册时间:2020-07-16

  • 博文量
    1307
  • 访问量
    1279582