gpt4 book ai didi

postgresql - 使用 postgres 按类型和日期过滤一些记录

转载 作者:行者123 更新时间:2023-11-29 14:26:00 25 4
gpt4 key购买 nike

我需要帮助来准备解决此问题的查询:

正在做:从客户中选择*

id | client_name | client_type | reg_date
11 | Abdul | 5 | 2019-03-02
44 | Miquel | 2 | 2019-09-11
12 | Alex | 5 | 2019-09-10
18 | Sam | 3 | 2019-09-02
62 | Julio | 2 | 2019-06-02
65 | Luis | 3 | 2019-02-12
94 | Manu | 3 | 2019-09-08
72 | Robert | 2 | 2019-09-07
29 | Lisa | 1 | 2019-09-02
12 | Alex | 4 | 2019-09-10
22 | Pedro | 3 | 2019-09-10
24 | Mary | 4 | 2019-09-11
24 | MariLuz | 5 | 2019-09-01
29 | Lisa | 5 | 2019-03-02
02 | Jorge | 3 | 2019-09-01
18 | Sam | 1 | 2019-09-03
88 | Omar | 2 | 2019-02-12
32 | Jhon | 3 | 2019-01-23
98 | Yona | 4 | 2019-09-11
97 | Marisa | 2 | 2019-09-05
96 | Juan | 5 | 2019-03-02
95 | Carmen | 3 | 2019-09-01
94 | Kike | 1 | 2019-09-03
85 | Mario | 2 | 2019-02-12
87 | Raul | 5 | 2019-09-03
75 | Martina | 5 | 2019-09-01
73 | Lara | 5 | 2019-09-09

我的问题是:我如何过滤此结果以仅查看具有类型 5前 4 客户 具有类型 3< 的前 3 客户/strong> 和具有类型 2 并且也在实际月份 (09) 插入的前 2 个 客户

所以结果必须只包含:

id | client_name | client_type | reg_date
12 | Alex | 5 | 2019-09-10
24 | MariLuz | 5 | 2019-09-01
87 | Raul | 5 | 2019-09-03
75 | Martina | 5 | 2019-09-01
18 | Sam | 3 | 2019-09-02
94 | Manu | 3 | 2019-09-08
22 | Pedro | 3 | 2019-09-10
44 | Miquel | 2 | 2019-09-11
72 | Robert | 2 | 2019-09-07

有人可以给出建议吗?

问候

最佳答案

试试这个查询:

WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY client_type ORDER BY reg_date) rn
FROM clients
EXTRACT(MONTH FROM reg_date) = 9 AND
client_type IN (2, 3, 5)
)

SELECT id, client_name, client_type, reg_date
FROM cte
WHERE
(client_type = 2 AND rn <= 2) OR
(client_type = 3 AND rn <= 3) OR
(client_type = 4 AND rn <= 4)
ORDER BY
client_type DESC;

如果您只想要 2019 年的记录,我们可以稍微修改上面的查询。

关于postgresql - 使用 postgres 按类型和日期过滤一些记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57890061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com