sql - 如何根据数据变化改变排名
问题描述
我想要一个窗口函数来根据它们的值对月份进行排名。所以在这个例子中,2018-12 是排名 1,2019-01 是 2,等等。
而且我还希望排名计数器在进入新队列后重置,在这种情况下,队列 2,排名应该再次从 1 开始,模式将类似于队列 1
SELECT *,
rank() over (partition by cohort, month order by month asc)
FROM (
SELECT 1 as cohort, id, date_trunc('month',start_date) as month
FROM _analysis.terms
WHERE holiday=FALSE and id >= 125
UNION SELECT 2, id, date_trunc('month', start_date) FROM _analysis.terms
WHERE holiday=FALSE and id >= 126
ORDER BY cohort, id, month
)
ORDER BY cohort, id, month
解决方案
推荐阅读
- c# - 更新查询的 ODP .NET 语句超时
- docker - 生成 Kong 客户端凭据时必须使用 HTTPS
- android - Java 8 的 AIDL (Android) 是否支持默认方法?
- python - Pandas Crosstab:传递值的形状是(1,3),索引暗示其他
- umbraco - 我在哪里可以找到 Umbraco 6 的文档?
- mysql - Mysql,如何选择具有较低值的行并将它们放入数组中?
- vb6 - 在数据网格视图中第二次删除一行不起作用
- jython - 如何根据值的 MD5 哈希在 Openrefine 中创建 UUID
- javascript - JavaScript 为 stringToColour 函数添加透明度选项
- c - 使用 pthread 和信号量的 C 语言中的读写器问题