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() 无重复 的相关文章

  • SQL Server OPENJSON读取嵌套json

    我有一些想要在 SQL Server 2016 中解析的 json 有一个项目 gt 结构 gt 属性的层次结构 我想编写一个解析整个层次结构的查询 但我不想通过索引号指定任何元素 即我不想做这样的事情 openjson json 0 or
  • 如何创建没有循环关系的树形表?

    CREATE TABLE TREE node1 id UUID REFERENCES nodes object id NOT NULL node2 id UUID REFERENCES nodes object id NOT NULL CO
  • 支持 >65k 行的 Excel VBA SQL 驱动程序

    在 Excel 2010 中通过 VBA 查询 Excel 数据时 我遇到一个有趣的问题 我正在使用这些驱动程序连接到 xls 或 xls x m 文件 Sub OpenCon ByRef theConn As Connection ByV
  • Microsoft SQL:CASE WHEN 与 ISNULL/NULLIF

    除了可读性之外 在防止 SQL 中的除以 0 错误时 使用 CASE WHEN 语句与 ISNULL NULLIF 相比还有什么显着的好处吗 CASE WHEN BeginningQuantity BAdjustedQuantity 0 T
  • 如何获得一列中的最大数量?

    我一直在尝试找到一个如何获取列中最大数字的示例 我想做的是 找到 TABLE A 中的最大列数 点 列 例如 我想输出这个 MAX 数字
  • 向带有检查约束 SQL 的表添加列

    我想向表中添加一列 然后添加一个检查约束以确保其大于 0 我似乎无法让它在 oracle sl Developer 中运行 Alter TABLE store101 add column Base salary Number 7 2 con
  • 告诉我 SQL Server 全文搜索器疯了,不是我疯了

    我有一些客户具有用户正在搜索的特定地址 123 通用方式 数据库中有 5 行匹配 ResidentialAddress1 123 GENERIC WAY 123 GENERIC WAY 123 GENERIC WAY 123 GENERIC
  • SQL服务器超时

    我的应用程序是在经典 asp 上开发的 但也使用 asp net 因为我正在将应用程序迁移到 Net 上 它使用 SQL Server 作为数据库并托管在 Windows Server 2003 上 现在的问题是应用程序在很长一段时间内继续
  • 具有不同组合的产品和产品包的数据库模型

    您将如何设计数据库来实现此功能 考虑一个场景 我们想要创建一个产品关系 封装 假设我们创建一个产品表 prod id prod name prod fee 1 prepaid A 19 usd 2 prepaid B 29 usd 3 pr
  • SKIP加锁和nowait的区别

    pl sql 中 SKIP 锁定游标和 nowait 游标之间的区别 我认为我找到的这张图片是描述差异的最佳例子 详细说明 http viralpatel net blogs oracle skip locked
  • PostgreSQL函数中sql语言和plpgsql语言的区别

    我很新数据库开发所以我对下面的例子有一些疑问 函数 f1 语言 SQL create or replace function f1 istr varchar returns text as select hello varchar istr
  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • TransactionScope 是否需要开启 DTC 服务?

    根据我的阅读 为了在 NET 中使用 TransactionScope 您需要运行 Windows 中的分布式事务协调器服务 我有那个服务关掉 并且我的应用程序似乎运行相同并且回滚事务没有问题 我错过了什么吗 它如何能够发挥作用呢 我正在运
  • 重用 t-sql 游标的起始位置?

    我正在开发一个在临时表上使用游标的存储过程 我已经阅读了一些关于为什么不需要游标的内容 但在这种情况下我相信我仍然需要使用游标 在我的过程中 我需要遍历表的行两次 声明游标后 已经单步执行临时表并关闭游标 重新打开时游标的位置是否仍保留在表
  • SQL存储过程执行时间差异

    我在 win form 应用程序中遇到奇怪的问题 我正在调用一个存储过程 并且执行大约需要 6 秒 此存储过程接受多个参数 包括一个输出参数 从应用程序级别我使用 Dim dt1 DateTime Now cmd ExecuteNonQue
  • SQL Server 文件操作?

    使用 SQL Server 2005 如何使用 T SQL 将文件读入 SPROC 所以 假设我有一个像这样的 CSV 文件 ID OtherUselessData 1 asdf 2 asdf 3 asdf etc 我基本上想这样做 Sel
  • 使用函数的 SQL 查询 - 如何获取列表的最大计数

    如何查询 MAXIMUM COUNT 交易次数 我的代码如下 SELECT customer id COUNT customer id FROM rental GROUP BY customer id HAVING MAX COUNT cu
  • 如何使用 php 在 sql 查询中转义引号?

    我有一个疑问 sql SELECT CustomerID FROM tblCustomer WHERE EmailAddress addslashes POST username AND Password addslashes POST p
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是
  • 替换字符串中的多个字符,而不使用任何嵌套替换函数

    我的表中存储了一个方程 我一次获取一个方程 并希望将所有运算符替换为任何其他字符 输入字符串 N 100 6858 6858 N 100 0 2 N 35 运算符或模式 替换字符 输出字符串 N 100 6858 6858 N 100 0

随机推荐

  • 使用 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