标签: row-number

Postgres - 基于连续值的排名

当连续序列被破坏时,如何创建一个从 1 重新开始的排名?

(点击下面的图片)

下表展示了用户的流程。他的总旅程由 8 个步骤组成,页面指示他在每个步骤中所处的页面。我想创建一个排名,当页面更改时该排名会重置。棘手的部分是让排名(第 6 页,第 1 页)重置为 1,而不是在第 4 页继续。按页面分区是不够的,因为我希望当用户更改回第 1 页并继续时重新启动排名。该表包含我想要实现的结果,我只是不知道如何在 Postgres 中做到这一点。

表排名

postgresql row-number ranking

3
推荐指数
1
解决办法
1175
查看次数

如何根据字母排序顺序设置 int 值

我是一个 SQL 菜鸟,我需要有关如何使用 SET 命令来分配 SortOrder 列的值的语法帮助。下面的代码不会更新表格,但它是我希望的样子(所有 SortOrder 值都设置为 0)。我可以手动进行,但寻找一种快速的替代方案(数据集有点大)。

Select ROW_NUMBER() OVER (ORDER BY Name ASC) AS SortOrder, Name
From DesignColours

SortOrder |Name
1          Beige
2          Black
3          Blue
4          Brown
5          Copper
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

sql sql-server row-number sql-order-by sql-update

3
推荐指数
2
解决办法
1287
查看次数

如何获取 JSON 字符串中行的详细行号

我有一个存储过程,它接受一个 NVARCHAR(max) 字符串,该字符串是我需要在将其加载到实时表之前验证的 JSON 数据。如果验证失败,我需要返回带有问题和错误数据行的行号的消息。这些行没有在 JSON 字符串中分配编号,但由它们在字符串中的存储顺序暗示。我正在尝试在 OPENJSON 函数期间分配一个增量编号。

使用 XML 时,我可以这样做:

SELECT ROW_NUMBER() OVER (ORDER BY item) AS rowOrder 
     , item.value('(./Id/text())[1]', 'bigInt') AS EId
     , item.value('(./Name/text())[1]', 'nvarchar(255)') AS EName
     , item.value('(./Number/text())[1]', 'nvarchar(30)') AS ENumber
FROM @ERow.nodes('/variable/item') AS main(item);
Run Code Online (Sandbox Code Playgroud)

派生它,但该技术不适用于 OPENJSON

如果可能的话,我宁愿不分两次进行 - 即将数据加载到临时表中,然后使用行号更新临时表中的行

SELECT ROW_NUMBER() OVER () AS rownum
     , newColumnName
     , decimal_column
     , nvarchar_column 
FROM OPENJSON(@JSON_String)
WITH (
    newColumnName BIGINT '$.id_column',
    decimal_column  DEC(28,8),
    nvarchar_column NVARCHAR(30)
)
Run Code Online (Sandbox Code Playgroud)

以为这会奏效,但没有运气。

想最终得到一张像 示例结果集

sql sql-server json row-number open-json

3
推荐指数
1
解决办法
2834
查看次数

在值更改时重置行号,但在分区中具有重复值

我遇到了与此问题非常相似的问题 T-sql Reset Row number on Field Change

这个问题的解决方案很完美,效果很好。除非我尝试使用多个其他“custno”,否则它会崩溃。

我的意思是:

custno      moddate                     who
--------------------------------------------------
581827      2012-11-08 08:38:00.000     EMSZC14
581827      2012-11-08 08:41:10.000     EMSZC14
581827      2012-11-08 08:53:46.000     EMSZC14
581827      2012-11-08 08:57:04.000     EMSZC14
581827      2012-11-08 08:58:35.000     EMSZC14
581827      2012-11-08 08:59:13.000     EMSZC14
581827      2012-11-08 09:00:06.000     EMSZC14
581827      2012-11-08 09:04:39.000     EMSZC49 Reset row number to 1
581827      2012-11-08 09:05:04.000     EMSZC49
581827      2012-11-08 09:06:32.000     EMSZC49
581827      2012-11-08 09:12:03.000     EMSZC49
581827      2012-11-08 09:12:38.000     EMSZC49
581827      2012-11-08 09:14:18.000     EMSZC49
581827      2012-11-08 09:17:35.000     EMSZC14 Reset row number to 1 …
Run Code Online (Sandbox Code Playgroud)

sql-server row-number lag ranking-functions partition-by

3
推荐指数
1
解决办法
4254
查看次数

将 ROW_NUMBER 列添加到流数据帧

我对 Spark 和 SQL 还很陌生。我正在尝试向我的 df 添加一列(然后将其保存到 Delta 表),该列为每个记录/行提供唯一的 id,并在每次更新特定记录时递增它。

我试图执行以下操作:

SELECT etc,
CONCAT(somerows1) as id1,
ROW_NUMBER() OVER(PARTITION BY somerows1 ORDER BY (SELECT NULL)) AS versionid
FROM etc
Run Code Online (Sandbox Code Playgroud)

somerows1 是几列的串联,以形成唯一的记录。我对以特定形式排序的记录没有特别的兴趣,这就是我选择 ORDER BY (SELECT NULL) 的原因。

我收到以下错误:

Error in SQL statement: AnalysisException: Non-time-based windows are not supported on streaming DataFrames/Datasets; line 1 pos 0;
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

谢谢

sql row-number sql-order-by spark-streaming apache-spark-sql

3
推荐指数
1
解决办法
3217
查看次数

MYSQL - 警告:#1287 在表达式中设置用户变量已被弃用,并将在未来版本中删除

警告:#1287 在表达式中设置用户变量已被弃用,并将在未来版本中删除。考虑替代方案:“SET 变量 = 表达式,...”或“SELECT 表达式 INTO 变量”。

这是 MySQL 8.0.21 吐出的内容。该代码可以工作......但我也需要它在未来的版本中工作......所以我的问题是这个警告的正确方法是什么?

我需要将一个变量设置为某个数字(我将通过行的 ID 获得该数字)。我需要在每个 SET 语句中将其加 1。

我应该如何更改此代码以使警告消失?

SET @fromorder = (SELECT `order` FROM forms WHERE id=5);
/* SET @fromorder = 4;  - so this is the same in the example below */
UPDATE forms SET `order` = @fromorder := @fromorder + 1 WHERE `order` > -1 and `order` <= 4 ORDER BY `order` ASC;
SET @fromorder = null;
Run Code Online (Sandbox Code Playgroud)

据我了解,问题的根源在于:

`order` = @fromorder := @fromorder + 1
Run Code Online (Sandbox Code Playgroud)

我想这需要改变吗?

所以由此可知: …

mysql row-number window-functions

3
推荐指数
1
解决办法
3863
查看次数

SQL row_number() - 如何忽略空值?

我需要使用以下查询向用户活动添加计数器:

select PERSON_ID, TIMESTAMP, 
  row_number() over (partition by  PERSON_ID order by  TIMESTAMP asc) as PERSON_COUNTER
from table1;
Run Code Online (Sandbox Code Playgroud)

这很有效,但它也会计算 PERSON_ID 为 null 的情况,并分配计数器,就好像 null 是用户名一样。我想要的是在这些情况下计数器为空 - 有什么想法吗?

sql null row-number snowflake-cloud-data-platform

3
推荐指数
1
解决办法
7234
查看次数

使用行和列索引在numpy中加载表,就像在R中一样?

我想在numpy中加载一个表,以便第一行和第一列被视为文本标签.相当于这个R代码的东西:

read.table("filename.txt", row.header=T)
Run Code Online (Sandbox Code Playgroud)

文件是分隔的文本文件,如下所示:

   A    B    C    D
X  5    4    3    2
Y  1    0    9    9
Z  8    7    6    5
Run Code Online (Sandbox Code Playgroud)

因此,读入我将有一个数组:

[[5,4,3,2],
 [1,0,9,9],
 [8,7,6,5]]
Run Code Online (Sandbox Code Playgroud)

某种:rownames ["X","Y","Z"] colnames ["A","B","C","D"]

有没有这样的阶级/机制?

python numpy header row-number indices

2
推荐指数
1
解决办法
130
查看次数

访问查询生成结果,如T-SQL中的ROW_NUMBER()

我们在MS Access中有ROW_NUMBER函数吗?如果它有,那么请让我知道它的任何语法,因为我被困在这里.我试过论坛,但我得到了sql server语法.以下是我的查询:

select 
    ROW_NUMBER() OVER (ORDER BY t.TID) AS uni , 
    t.TSource as [Source],
    t.TText as [Text],
    u.Name as [UserId],
    u.Image_Url as [ImageFilePath], 
from table1 t inner join table2 u on t.UserId = u.UIds
Run Code Online (Sandbox Code Playgroud)

但它给出了语法错误.

ms-access row-number

2
推荐指数
1
解决办法
1万
查看次数

找到重复的行并将第一行标记为1并保留重复的行0

我的表中有以下数据,

COL1  COL2

A      X  
A      Y  
A      Z  
B      W  
B      W  
C      L  
C      L  
Run Code Online (Sandbox Code Playgroud)

我想用一个额外的标志来获取上面的数据,例如,对于唯一列值,flag应为1,第一次出现的重复应为1,剩余的重复行为0,预期输出:

COL1  COL2   FLAG  
A      X     1  
A      Y     1  
A      Z     1  
B      W     1   -- First occurance  
B      W     0   -- Second occurance  
C      L     1   -- First occurance  
C      L     0   -- Second occurance 
Run Code Online (Sandbox Code Playgroud)

我知道row_number()over(由COL1,COL2分区)将返回如下所示的计数,

COL1   COL2   FLAG  
A       X     1  
A       Y     1     
A       Z     1    
B       W     2    
B       W     2   
C       L     3  
C       L     3   
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.第二次出现的相同列值应该归为0 …

sql oracle row-number duplicates

2
推荐指数
1
解决办法
302
查看次数