python sqlite3是否支持rank函数

时间:2019-03-28 09:43:13

标签: python sqlite

我想知道python sqlite3库是否支持RANK()函数。

当我通过在线Sqlite浏览器执行查询时,它可以正常运行,但通过python却无法运行。

File "xyz.py", line 509, in createData
    conn.execute('SELECT RANK() OVER ( ORDER BY dateAndTime)  FROM xyz;')
sqlite3.OperationalError: near "(": syntax error

谢谢!

3 个答案:

答案 0 :(得分:0)

我不知道您的Python脚本使用的SQLite版本是否支持RANK()。假设没有,以下是您可以将其用作解决方法的查询:

SELECT
    (SELECT COUNT(*) + 1 FROM yourTable t2
     WHERE t2.id < t1.id) rnk
FROM yourTable t1
ORDER BY
    dateAndTime;

我们可以使用相关子查询来处理等级逻辑。请注意,对于DENSE_RANK,解决方法可能并不容易。

这是一个演示,演示了我的逻辑和RANK的行为方式。

Demo

答案 1 :(得分:0)

另一种替代方法是改为使用row_number():

row_number()  

结合升序(ASC)或降序(DESC)以获得排序的排名

ORDER BY DESC # or ASC 

此外,当在python中使用sqlite时,这可能会很有用 http://www.sqlitetutorial.net/sqlite-window-functions/sqlite-row_number/

答案 2 :(得分:0)

肖恩指出我的图书馆太老了。 Br

  

Sqlite在3.25中具有窗口函数,因此您必须使用该版本或更高版本。