DENSE_RANK() 无重复

2023-12-09

我的数据如下所示:

| col1 | col2 | denserank | whatiwant |
|------|------|-----------|-----------|
| 1    | 1    | 1         | 1         |
| 2    | 1    | 1         | 1         |
| 3    | 2    | 2         | 2         |
| 4    | 2    | 2         | 2         |
| 5    | 1    | 1         | 3         |
| 6    | 2    | 2         | 4         |
| 7    | 2    | 2         | 4         |
| 8    | 3    | 3         | 5         |

这是我到目前为止的查询:

SELECT col1, col2, DENSE_RANK() OVER (ORDER BY COL2) AS [denserank]
FROM [table1]
ORDER BY [col1] asc

我想要实现的是我的密集列增量每次 col2 的值发生变化时(即使该值本身被重用)。我实际上无法按密集排序的列进行排序,所以这是行不通的)。请参阅whatiwant列为例。

有什么办法可以实现这一点DENSE_RANK()?或者还有其他选择吗?


我会用这样的递归 cte 来做到这一点:

declare @Dept table (col1 integer, col2 integer)

insert into @Dept values(1, 1),(2, 1),(3, 2),(4, 2),(5, 1),(6, 2),(7, 2),(8, 3)

;with a as (
select col1, col2, 
ROW_NUMBER() over (order by col1) as rn
from @Dept),
s as 
(select col1, col2, rn, 1 as dr from a where rn=1
union all
select a.col1, a.col2, a.rn, case when a.col2=s.col2 then s.dr else s.dr+1 end as dr 
from a inner join s on a.rn=s.rn+1)
col1, col2, dr from s

result:

col1        col2        dr
----------- ----------- -----------
1           1           1
2           1           1
3           2           2
4           2           2
5           1           3
6           2           4
7           2           4
8           3           5

仅当您的 col1 值不连续时才需要 ROW_NUMBER。如果是,您可以立即使用递归 cte

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

DENSE_RANK() 无重复 的相关文章

  • Oracle:如何获取刚刚插入的行的序列号?

    如何获取刚刚插入的行的序列号 插入 返回 declare s2 number begin insert into seqtest2 x values aaa returning seq into s2 dbms output put lin
  • SQL 2008全文索引填充延迟

    我的经理说 在基础表数据更改后 可能需要一段时间才能更新全文搜索索引 例如 如果我有一张桌子Products有一个柱子Description我更新了该描述 然后我可能需要一些时间才能搜索该新描述 真的吗 这需要多长时间 SQL 2008 对
  • 根据日期顺序排名

    我的数据如下 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
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • sql查询获取从一月到当月的所有数据,即使没有记录

    我不擅长 sql 所以任何帮助世界都很棒 我有一个 SQL 查询 可以获取从一月到当月注册的记录 我的代码示例 SELECT DatePart YEAR p createStamp as TheYear DatePart MONTH p c
  • 意外的查询结果

    为什么我从 sql server 得到以下结果 SELECT 12 C1 CONVERT int C2 CASE WHEN THEN equal ELSE not equal END C3 Sql Server Fiddle 演示 http
  • 数据库字段中的逗号分隔值

    我有一个产品表 该表中的每一行对应一个产品 并由唯一的 ID 标识 现在 每个产品都可以有多个与该产品关联的 代码 例如 Id Code 0001 IN ON ME OH 0002 ON VI AC ZO 0003 QA PS OO ME
  • 如何在MYSQL中将整个字符串小写并保持第一个大写[重复]

    这个问题在这里已经有答案了 我的表栏目 我预期的输出会在列中发生变化 Smith Allen Doyle Dennis Baker Waker 这是我尝试过的 但不起作用 UPDATE TABLE employee SET last nam
  • 内置函数将每个单词的第一个字母大写

    如果 SQL Server 中已存在此类函数 我不想为此创建自定义函数 输入字符串 This is my string to convert预期输出 This Is My String To Convert SET ANSI NULLS O
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • 是否有适用于 SQL Server Express 的 SQL Server Profiler? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有适用于 SQL Server Express 的 SQL Server Profiler 也许是开源的 或者也许只是一个可以帮助我查
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Spark SQL 中的 SQL LIKE

    我正在尝试使用 LIKE 条件在 Spark SQL 中实现联接 我正在执行连接的行看起来像这样 称为 修订 Table A 8NXDPVAE Table B 4 8 NXD V 在 SQL Server 上执行联接 A revision
  • SQL Server 数据库架构版本控制和更新

    对于我的应用程序 我必须支持更新方案 并且数据库可能会受到影响 我希望能够从旧版本更新到最新版本 而无需安装中间版本 例如 假设我有版本 A 最旧的版本 B 中间版本 和 C 新版本 我希望能够将版本 A 直接更新到版本 C 对于应用程序文
  • 使用加权行概率从 PostgreSQL 表中选择随机行

    输入示例 SELECT FROM test id percent 1 50 2 35 3 15 3 rows 你会如何编写这样的查询 平均 50 的时间我可以获得 id 1 的行 35 的时间 id 2 的行 15 的时间 id 3 的行
  • 我可以从 SQL Server 读取元数据来了解最后更改的行/表吗?

    我们有一个数据库hundreds的桌子 有没有某种metaSQL Server 中的数据源 我可以以编程方式查询以获取名称最后更改表和行 或者我们是否需要实施这个我们自己每个表中的字段称为上次更改日期时间 etc 就查明表最后一次修改的时间
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么
  • SQL 更新 - 更新选定的行

    我正在使用 SQL Server 2008 我有一个名为MYTABLE有两列 ID STATUS 我想编写一个存储过程来返回其记录STATUS是 0 但是这个存储过程必须更新STATUS返回行数为 1 如何在单个查询中执行此选择和更新操作

随机推荐

  • 使用 md-datepicker 在 MEANjs 中设置另一种日期格式

    我正在使用 Angular Material 中的 md datepicker 指令 但是我想输入日期 而不仅仅是从日期选择器中选择它 我找到了以下示例代码 angular module MyApp controller AppCtrl f
  • Google Sheets onEdit - 尝试通过更改同一行中列的值来将行复制到新工作表

    请参阅我的电子表格的 Sheet1 https docs google com spreadsheets d 1EoOIQxWyKWOvtlCrmJNI76FAxGhzgXrE4s0F05tw2MY edit gid 0 例如 我想通过将
  • 加密和解密 Azure redis 缓存中的值

    我想在存储时加密 在读取redis缓存中的值时解密 什么是最安全的方法来做到这一点 由于 GDPR 合规性 我无法直接存储用户别名 以下是我将其转换为字节并将字节数组存储在 redis 中的方法 https learn microsoft
  • 即使最小化应用程序并在片段中导航时重新启动,声音也会继续播放

    在我的天气应用程序上成功实现声音后 当搜索城市时 它的播放效果非常好 但问题是 即使我最小化应用程序 它仍然 继续重复播放声音 直到我关闭 退出应用程序 我想要它 当我最小化应用程序时暂停 然后从停止的地方继续播放 当我回来的那一刻 所以我
  • 如何将 TabControl 标头中的关闭按钮绑定到窗口 ViewModel 中的命令?

    我正在开发一个工具 想要向 TabControl 中的选项卡添加一个关闭按钮 我不知道如何将按钮的 Command 属性绑定到窗口 ViewModel 上的相应属性 VM 很简单 只需 INPC 实现和名为 CloseSelectedFil
  • 如何使用 scipy 稀疏矩阵对 numpy 数组进行列堆叠?

    我有以下矩阵 A toarray array 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 dtype int64 type A scipy
  • 如何让 NHibernate 只生成 SQL 而不执行它?

    我知道如何在运行时使用以下命令将 SQL 记录到 log4net NLog trace 窗口show sql配置选项 我正在寻找的是一种给予Query
  • Jquery浏览器的停止按钮事件

    有没有办法检测用户何时单击任何浏览器上的停止按钮 我想在用户上传文件时决定单击停止按钮时停止脚本运行 这样我就可以触发脚本刷新页面 不幸的是 浏览器的停止按钮不会影响 AJAX 请求 如果你想取消 AJAX 请求 可以像下面这样中止它 va
  • 如何在ionic2中传递数据

    我通过http获取数据 我想将数据传递到 PlacesListPage 我的数据中有 id name category 我想在 PlacesListPage 中使用这些内容 如下所示 xxx id xxx name 请帮助我 xxx 例如
  • 如何衡量承诺的执行时间?

    我正在尝试编写一个函数来测量另一个函数的执行时间 export class Profiler public measureSyncFunc fn gt any Promise
  • 从命令行使用 nntool [MATLAB]

    我有这个代码 in 5 columns of data points out 1 column of data points net newfit in out 5 net train net in out 现在我想要 访问误差变量生成的
  • 在matlab中加载stl文件并转换为3D数组

    我有一个 stl 文件 我已使用 stlread 函数将其加载到 Matlab 中 此时我有一组面和顶点 如何将这些面和顶点转换为 512x512x100 数组等 3D 二进制数组以获得二进制 3D 体积 啊你真幸运 我最近正在处理 STL
  • C++ 中运算符 << 的重写

    我正在为我的学校做一个 C 项目 我有两个班级 雇员和老师 Teacher 源自 Employe 并优先于其职能 我们重写运算符 lt lt 打印员工或教师的一些信息 每个班级都有一个const int attribute LevelAcc
  • 密钥“PRIMARY”重复输入“0”

    我不明白为什么在尝试填充此表时会收到此错误 目前表中没有任何内容 所以我不明白为什么会有重复的 这是我正在使用的代码 INSERT INTO Suppliers supp id company name town phone Values
  • 调试rails 3.1.1 应用程序

    我尝试向使用 ruby 1 9 2 的 Rails 3 1 1 应用程序添加调试器 我已将以下内容添加到我的 gemfile 中 gem ruby debug19 require gt ruby debug 我收到以下错误 rvm gems
  • 使用 PHP 发送批量电子邮件

    当新用户加入时 我必须向网站中的所有用户发送邮件 我的问题是脚本在发送大约 400 封邮件后停止执行 我已将 set time limit 设置为 0 并且我在发送 10 封邮件后给予 sleep 2 此问题背后的原因可能是什么 此问题的任
  • 列表列表到词典列表

    如何将列表列表转换为字典列表 更具体地说 我该如何处理 a1 b1 c1 d1 e1 f1 g1 h1 i1 a2 b2 c2 d2 e2 f2 g2 h2 i2 a3 b3 c3 d3 e3 f3 g3 h3 i3 a4 b4 c4 d4
  • JBoss 7.1 Weld 在耳边的罐子里发现了 Managed Bean,但战争并没有

    jboss as 7 1 1 动态 Web 模块 3 0 JSF 2 0 Mojarra Eclipse Indigo sr2 我有一个 EAR Ynale ear 其中包含一个 YnaleImpl jar 和一个 Ynale war Yn
  • 我如何操作一个非常大的列表

    我有超过 10000 个文件 我首先将目录设置为文件所在的文件夹 然后我用以下命令链接到所有文件 txt像这样的格式 filenames lt list files path to the file pattern txt full nam
  • DENSE_RANK() 无重复

    我的数据如下所示 col1 col2 denserank whatiwant 1 1 1 1 2 1 1 1 3 2 2 2 4 2 2 2 5 1 1 3 6 2 2 4 7 2 2