sql - 在 PostgreSQL 的窗口函数中按降序聚合排序
问题描述
我有一个数据集,其中包含主变量的重复值,如下所示:
col1 col2 counts
110 False 1
111 False 2
111 False 1
112 True 3
112 False 2
112 False 1
113 False 1
114 False 1
115 False 2
115 False 1
116 False 1
117 False 1
118 False 4
118 False 3
118 False 2
118 False 1
我通过使用以下代码实现了这一点
SELECT DISTINCT ctm_nbr
,col1
,col2
,RANK () OVER (PARTITION BY col1 ORDER BY col2) AS counts
FROM my_table
GROUP BY 1,2,3
ORDER BY ctm_nbr, row_numb DESC
但是,需要对我想要的输出进行排序,以便counts
降序但col1
保持分区,以便我可以看到 col1 中的哪个值具有最高计数。像这样...
col1 col2 counts
118 False 4
118 False 3
118 False 2
118 False 1
112 True 3
112 False 2
112 False 1
115 False 2
115 False 1
111 False 2
111 False 1
110 False 1
113 False 1
114 False 1
116 False 1
117 False 1
我已经尝试了 final 子句的各种迭代,ORDER BY
但不能完全产生我需要的输出。指导表示赞赏。
解决方案
您可以在order by
. 我想你只是想要:
ORDER BY COUNT(*) OVER (PARTITION BY ctm_nbr) DESC,
ctm_nbr,
row_numb DESC
这假设计数是 的最大值row_numb()
。因此,您也可以将其表示为:
ORDER BY MAX(row_numb) OVER (PARTITION BY ctm_nbr) DESC,
ctm_nbr,
row_numb DESC
推荐阅读
- swift - 如何区分 Siri Remote 按钮按下和游戏手柄按钮按下?
- java - VisualVM 探查器的行为莫名其妙,我不知所措。这里发生了什么?
- powershell - 将图像存储在 Sharepoint 中并获取要在 PowerBI 上显示的 URL 图像
- javascript - 防止 xmlhttp 函数在 keyup 上再次运行
- database - 如何每天有效地存储 1B 的新行并有可能进行查询/索引?
- jquery - 文件上传不再适用于 Chrome
- html - 如何在引导网格 div 中移动元素
- python - 如何在 Tkinter 的标签内添加变量?
- python - 根据字典值追加列表嵌套字典
- excel - Excel函数返回数组中相应项目的总和