postgresql - PostgreSQL 按组限制,仅显示前 2 个存储选项
问题描述
我需要选择前 2 行,其中 store_name 与给定产品的不同
id | store_name | prod_name
----+------------+------
1 | 1 | A
2 | 1 | B
3 | 1 | C
4 | 1 | A
5 | 2 | E
6 | 2 | A
7 | 3 | G
8 | 2 | A
9 | 1 | A
10 | 3 | A
(10 rows)
结果应该是 store_name <> 3 AND prod_name ='A'
id | store_name | prod_name
----+------------+------
1 | 1 | A
4 | 1 | A
6 | 2 | A
8 | 2 | A
解决方案
使用row_number()
窗口函数来完成此操作。
查询 #1
with first_two as (
select *,
row_number() over (partition by store_name
order by id) as rn
from store_product
where store_name <> 3
and prod_name = 'A'
)
select id, store_name, prod_name
from first_two
where rn <= 2;
| id | store_name | prod_name |
| --- | ---------- | --------- |
| 1 | 1 | A |
| 4 | 1 | A |
| 6 | 2 | A |
| 8 | 2 | A |
推荐阅读
- flutter - Flutter 将数据传递给子小部件
- nginx - Nginx 七层流量行为
- spring - 将 Spring Boot 升级到 2.3.8 后出现错误 - 原因:java.lang.ClassNotFoundException: org.springframework.data.mongodb.MongoDatabaseFactory
- java - 创建存储在 SQL 列中的一组玩家
- javascript - 在我的 shopify 商店的购物车上显示自定义验证码 onclick
- java - Android循环播放动画
- python - 在广播中以行方式使用 numpy matmul
- node.js - 如何在使用 NodeJS 的 compute.getVMs 方法的选项中使用 pageToken?
- python - 如何在 Tensorflow Data API 中批量处理不同形状的张量?
- python - 用 Beautiful Soup 抓取 URL 并附加到列表