我有一個 sql 查詢,在按名稱、季度、年份分組并按年份 DESC、季度 DESC 排序后,生成一個類似于以下的表:
| 姓名 | 數數 | 四分之一 | 年 |
|---|---|---|---|
| 橙 | 22 | 4 | 2022 |
| 蘋果 | 1 | 4 | 2022 |
| 香蕉 | 123 | 3 | 2022 |
| 餡餅 | 93 | 2 | 2022 |
| 蘋果 | 12 | 2 | 2022 |
| 橙 | 0 | 1 | 2022 |
| 蘋果 | 900 | 4 | 2021 |
| ... | ... | ... | ... |
我想洗掉在達到季度和年份的第 4 個唯一組合之后出現的所有行(對于上表,這將是 2022 年第 1 季度最后一個組合之后的任何行),如下所示:
| 姓名 | 數數 | 四分之一 | 年 |
|---|---|---|---|
| 橙 | 22 | 4 | 2022 |
| 蘋果 | 1 | 4 | 2022 |
| 香蕉 | 123 | 3 | 2022 |
| 餡餅 | 93 | 2 | 2022 |
| 蘋果 | 12 | 2 | 2022 |
| 橙 | 0 | 1 | 2022 |
我正在使用 Postgres 6.10。
如果到了下一年,它仍然需要在頂部的季度為 1 和 2023 年的情況下作業。
uj5u.com熱心網友回復:
select name
,count
,quarter
,year
from
(
select *
,dense_rank() over(order by year desc, quarter desc) as dns_rnk
from t
) t
where dns_rnk <= 4
| 姓名 | 數數 | 四分之一 | 年 |
|---|---|---|---|
| 橙 | 22 | 4 | 2022 |
| 蘋果 | 1 | 4 | 2022 |
| 香蕉 | 123 | 3 | 2022 |
| 餡餅 | 93 | 2 | 2022 |
| 蘋果 | 12 | 2 | 2022 |
| 橙 | 0 | 1 | 2022 |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/521706.html
上一篇:寫入comport時出現分段錯誤
