如何在sqlite中对表中的行进行排名?

时间:2017-07-18 15:15:11

标签: sqlite calculated-columns rank

如何创建一个基于两个或三个键对表的信息进行排名的列? 例如,在此表中,rank变量基于Department和Name:

Dep | Name | Rank 
----+------+------
 1  | Jeff |  1
 1  | Jeff |  2
 1  | Paul |  1
 2  | Nick |  1
 2  | Nick |  2

我找到this solution但是它在SQL中,我不认为它适用于我的情况,因为所有信息都在一个表中,并且响应似乎是SELECT和JOIN组合来自不同表的信息。 提前谢谢

1 个答案:

答案 0 :(得分:1)

您可以计算当前组中当前行之前的行数:

UPDATE MyTable
SET Rank = (SELECT COUNT(*)
            FROM MyTable AS T2
            WHERE T2.Dep    = MyTable.Dep
              AND T2.Name   = MyTable.Name
              AND T2.rowid <= MyTable.rowid);

rowid列用于区分其他相同的行。如果您有主键,请使用主键。)