问题标签 [dense-rank]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pandas - 从 pandas 密集秩数据框中选择某个值
我有一个带有密集秩矩阵的 pandas 数据框,并且想要选择所有具有 2 的单元格。然后将其转换为如下所示的结果数据框。我只用for循环遍历每一列和每一行,但有更好的方法吗?
df 看起来像
results_df 就像
sql-server - Row_Number() 根据连续行进行分区
我正在处理 SQL Server 2008 的查询,该查询需要以考虑表中行的连续性质的方式进行分区,这意味着它没有“内存”并在分区的连续性发生故障时重新开始行编号。
为了显示:
以下查询返回:rowNo
而不是所需的:
在第 5 行和第 6 行的情况下,它应该重新开始计数,因为当您考虑连续性将其与初始分区分开时,它是一个新分区。
我还需要根据行编号对行进行排名,如下所示:
sql - SQL plus,两个表排名前 3
我试图找到一种方法来查询数据库中前三个用户的收听次数,并输出他们的用户 ID 和排名。
有问题的两个表的架构如下:
我可以看到有多少人通过计数查询来解决这个问题,但我想知道有没有办法通过排名或密集排名来做到这一点
oracle - 为什么 DENSE_RANK 在使用 OLE DB 对 ORACLE 进行 SSIS 查询时会导致错误?
这个查询:
该查询按 DATE_ADDED 从 1 到 x 对每组 ANUMID、PRODNUMID 中的行进行排名。在随后的查询中,DRANK=1 获取添加的最新行。
此查询在 ORACLE SQL Developer、我的本地计算机 SSIS 环境以及 TEST 服务器上的 SSIS OLE DB 源预览中有效,但在运行包时不起作用。
错误:
[OLE DB 源 1 [677]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E14。OLE DB 记录可用。来源:“OraOLEDB”Hresult:0x80040E14 描述:“ORA-00936:缺少表达式”。
环境:
本地 - Windows XP、SQL BIDS 2008
测试 - Windows7、SQL/BIDS 2008
从那以后,我重写并简化了查询,将数据抓取到一个临时表中,然后使用 SQL Server 对记录数进行排名和减少。
关于首先找到 SQL 不起作用的根本原因的任何想法?以及为什么预览会起作用,但运行包却不起作用?
sql - DENSE_RANK 根据特定顺序
嗨,我有一个数据表,我想根据排序的日期顺序从第一组名称开始输出名称的 dense_rank。例如
对于上面的查询,我得到了
您可以看到日期已排序(好),等级分配给组中的名称(好),但等级不是从第一组名称开始,例如我想要
您将如何更正查询?如果有多个工作答案,将选择最简单/最短的一个作为答案。谢谢。
添加:
感谢@lad2025 和@GiorgosBetsos 澄清我的问题。排序是直接根据日期和日期在我的情况下是独一无二的。名称可以不连续地重复和出现。因此('2015-12-24', 'aaa')
,输出为
sql - Oracle SQL - DENSE_RANK
我有一个客户数据表,其中选定的列如下所示:
在将数据按 Client_ID 和 From_date 升序排列后,我的目标是在每次将状态与前一行进行比较时,在该客户端的状态发生变化时添加一个计算得出的 Rank_ID。我想要的 Rank_ID 值如下所示:
我正在尝试使用 DENSE_RANK 作为分析函数,我的“不正确”SQL 代码如下
但是,我遇到的问题是它给出了编写的 SQL 代码,它计算 Rank_ID 如下:
对于记录 13,返回的 Rank_ID 是 3(而我想要 5,与该客户端的先前记录的状态相比,它是该客户端的状态变化),对于记录 14,返回的 Rank_ID 是 4,而我想要6,因为与前一行相比,该客户端的状态再次发生了变化。
我想问题是我的 SQL 按 Client_ID 和 Status_ID 对数据进行排序,所以我可以看到为什么它会产生它给出的答案。问题是无论我对 DENSE_RANK 行进行什么更改,我都无法获得我想要的答案。
任何帮助,将不胜感激。
sql-server - SQL 2008 DENSE_RANK - 不工作
我试图让一个 dense_rank 函数工作,但它不断返回以下内容:
查询是:
我很明显错过了一些明显的东西,但看不到?
sql - 满足条件时重新启动 Row_Number 序列
我遇到了一个看起来很简单的路障,但我似乎无法找到解决方案。我希望这里的一些对 Oracle SQL 有更多了解的人可以提供帮助。
本质上,我正在构建一个按完整日期排列的工作列表,这很简单。它们之间的共同联系是它们都针对同一个客户(不同的编号)和相同的位置(不同的编号)。我的问题是,每当两个工作之间的持续时间超过 30 天时,我需要找到一种方法来中断并从 1 重新开始该排名/计数。这是我正在查看的简化版本:
由于第二行的持续时间超过30,我想怎么看,如下:
因为第二份工作超出了 30 天的窗口,所以链条应该从下一份工作重新开始。我的问题是我找不到对数据进行分区的方法,以便识别此标准并重新开始计数。没有其他列可以让我以这种方式对 row_number 或 dense_rank 进行分区(例如,每个 30 天链的公共订单键或系统作业序列)。
我已经尝试了大约 20 种不同的方法来解析我在这里读过的线程中的这些数据,但无济于事,所以任何关于如何实现这一点的帮助或想法都将不胜感激。我有大约 50,000 行需要应用此排序的数据。我已经在工作中和工作中自学 SQL 大约一年了。我已经达到了我对这个的知识极限。