首页 > 解决方案 > python sqlite3是否支持rank函数

问题描述

我想知道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

提前致谢!

标签: pythonsqlite

解决方案


我不知道您的 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行为方式相同。

演示


推荐阅读