pgsql:获取分组中最大或最小的一条数据

2023-10-31

步骤1:查询并排序各分组的记录

sql的查询语句如下:

SELECT 
    tb.curr_read,tb.arch_id,
    ROW_NUMBER() OVER(PARTITION by arch_id ORDER BY year_month desc)idx 
FROM t_month_cdate tb
WHERE tb.year_month BETWEEN '2021-01' and '2021-05' 
and arch_id in('00004','00005','00006')

查询结果:

说明:

1.ROW_NUMBER:该函数可以对分组进行编号

2.PARTITION by :对arch_id 这个字段进行分组

3.ORDER BY:在分组区间内按year_month 进行倒序

步骤二:筛选出最大记录

在原查询结果中筛选出idx第一条,即为最大记录。

以上调整后的sql语句如下:

SELECT * FROM
(
SELECT tb.curr_read,tb.arch_id,ROW_NUMBER() OVER(PARTITION by arch_id ORDER BY year_month desc)idx FROM t_month_cdate tb
WHERE tb.year_month BETWEEN '2021-01' and '2021-05' and arch_id in('00004','00005','00006')
)tm
WHERE idx=1

输出结果:

以上完毕。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pgsql:获取分组中最大或最小的一条数据 的相关文章