我想知道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
谢谢!
答案 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
的行为方式。
答案 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中具有窗口函数,因此您必须使用该版本或更高版本。