根据日期顺序排名

2024-06-19

我的数据如下

**Heading    Date**
A          2009-02-01
B          2009-02-03
c          2009-02-05
d          2009-02-06
e          2009-02-08

我需要如下排名

Heading    Date           Rank
A          2009-02-01      1
B          2009-02-03      2
c          2009-02-05      1
d          2009-02-06      2
e          2009-02-07      3

因为我需要根据日期排名。如果日期是连续的,则排名应为 1、2、3 等。如果日期有任何中断,我需要从 1、2、... 重新开始

谁可以帮我这个事?


SELECT heading, thedate
      ,row_number() OVER (PARTITION BY grp ORDER BY thedate) AS rn
FROM  (
   SELECT *, thedate - (row_number() OVER (ORDER BY thedate))::int AS grp
   FROM   demo
   ) sub;

当您谈到“排名”时,您似乎想要窗口函数的结果row_number() http://www.postgresql.org/docs/current/interactive/functions-window.html.

  1. 形成连续几天的组(同一日期grp) 在子查询中sub.
  2. 与另一个编号行row_number()调用,这次划分为grp.

由于窗口函数不能嵌套,因此此处最少需要一个子查询。

SQL 小提琴。 http://sqlfiddle.com/#!15/ca77f/2

请注意,我使用了矛盾样本数据的第二个版本。结果是这样的@mu建议 https://stackoverflow.com/users/479863/mu-is-too-short在他的评论中。
还假设没有重复的日期。在这种情况下,您必须首先聚合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据日期顺序排名 的相关文章

随机推荐

  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • 如何部分或仅按百分比沿路径过渡

    我是 d3 的初学者 目前无法使用最新版本 但我使用的是 3 x 版本 我想要实现的应该很简单 但遗憾的是我没有找到有关如何做到这一点的资源 目标是在我的 svg 中显示一条路径 然后我想显示例如一个圆并沿着路径过渡 移动 追踪圆 如果我想
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • 生成尽可能最快的可执行文件

    我有一个非常大的程序 我一直在 Visual Studio 下编译 v6 然后迁移到 2008 我需要可执行文件尽可能快地运行 该程序大部分时间都花在处理各种大小的整数上 并且执行很少的 IO 显然 我会选择最大优化 但似乎可以做很多不属于
  • 如何在我的应用程序中添加应用内购买

    我想在我的应用程序中使用应用程序购买应用程序 但我不知道如何执行此操作 任何人都可以帮助我如何做以及源代码在哪里 给我链接或代码 这里有一堆链接 应用内购买编程指南 http developer apple com iphone libra
  • 在Java中清空数组/处理

    除了循环遍历数组中的每个元素并将每个元素设置为 null 之外 Java 处理中是否有一个本机函数可以简单地清空数组 或销毁它 以便能够将其重新声明为新数组 There s Arrays fill myArray null 并不是说它执行的
  • 如何在SSIS中将数据库名称设置为变量?

    在我当前的项目中 数据库名称不断变化 我不想每次都修改我的 OLE DB 源 因此我想将其设置为变量 也就是说 在每个 OLE DB Source 中 我可以将它用作参数 但是 SSIS 似乎不允许将数据库名称作为参数传输 那么我应该怎样做
  • 在 bash 脚本中检测鼠标点击

    我想知道如何在后台运行 bash 脚本 每当用户单击鼠标时该脚本都会执行某些操作 即运行脚本或命令或其他任何内容 即使终端关闭 我也希望它继续运行 有任何想法吗 谢谢 如果您使用的是X11 您可以尝试xdotool捕获鼠标事件 它会是这样的
  • 在 PHP 中重新定义常量

    是否可以在 php 中重新定义由define功能 我有一个包含多个常量的类 其中包含用户数据 我正在尝试为多个用户使用该类 define ALLEGRO ID id define ALLEGRO LOGIN login define ALL
  • ASP.NET WebApi - 一个控制器中的多个 GET 操作

    I have Users控制器和基本 REST 模式工作得很好 不过我需要一种额外的模式users id usergroups这将返回该用户的所有用户组 实现这一点的最佳方法是什么 因为我想我将需要在更多控制器上使用类似的路由 仅使用默认值
  • aio.h aio_read() 和写入内存泄漏

    我正在尝试使用 C 异步读取和写入磁盘 使用 Ubuntu 10 04 中的 posix aio 库 遵循此处概述的说明 一体机教程 http www ibm com developerworks linux library l async
  • 在函数内的 for 循环上使用 tqdm 来检查进度

    我正在使用 for 循环迭代目录树内的一大组文件 这样做时 我想通过控制台中的进度条来监视进度 因此 我决定使用 tqdm 来实现此目的 目前 我的代码如下所示 for dirPath subdirList fileList in tqdm
  • 从 torch.autograd.gradcheck 导入 zero_gradients

    我想复制代码here https github com LTS4 DeepFool blob master Python deepfool py 并且我在 Google Colab 中运行时收到以下错误 ImportError 无法导入名称
  • 使用纬度/经度对的自定义距离度量进行聚类

    我试图为 scikit learn DBSCAN 实现指定一个自定义聚类函数 def geodistance latLngA latLngB print latLngA latLngB return vincenty latLngA lat
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • 将 HttpClient 设置为太短的超时会导致进程崩溃

    我注意到当我使用时System Net HttpClient如果超时时间很短 有时可能会导致进程崩溃 即使它被包装在 try catch 块中 这是一个重现这一点的简短程序 public static void Main string ar
  • 使用 C 测试 X509 证书到期日期

    如何以编程方式测试 X509 证书是否过期 他们是直接的加密 API 吗 或者我必须获取 not after 时间并在我的代码中手动检查它 你没有说是哪种语言 所以我还是总结一下 php data openssl x509 parse fi
  • 如何在 Oracle PLSQL 中提交单个事务

    我需要编写一个 PL SQL 过程 在这个过程中 我需要在其自己的事务范围内调用另一个过程 并提交它 无论主事务是否失败或提交 换句话说 我需要类似的东西REQUIRES NEW交易传播 就像是 procedure mainProcedur
  • 使用 ICollectionView 过滤 ObservableCollection

    I have ObservableCollection绑定到dataGrid现在我想过滤我看到需要使用的呈现数据ICollectionView但我不知道如何添加ICollectionView和我的MVVM图案 我的代码简化如下 public
  • 根据日期顺序排名

    我的数据如下 Heading Date A 2009 02 01 B 2009 02 03 c 2009 02 05 d 2009 02 06 e 2009 02 08 我需要如下排名 Heading Date Rank A 2009 02