dense_rank和sqlite - 可能吗?

时间:2013-09-15 19:32:20

标签: sqlite

我的情况是我有一个非常小的PostgresSQL数据库(大约10个表,其中最大的是几千行)我希望从单用户样式的应用程序中使用它安装整个服务器感觉不必要的繁重。所以,我想,SQLite听起来就像票子一样。

我移植了架构,导入了数据然后我卡在了一个视图上(实际上,它是唯一的视图)。我的问题是我正在使用非常方便的dense_rank函数。我读到了这个:sqlite - Unsupported Sql Analytical Functions并且可以看到它不可用,但它让我知道它可能在SQLite::More但它似乎也不在那里。

那么,有没有人知道我可以在SQLite数据库的视图中使dense_rank函数可用?我可以使用另一个图书馆吗?

2 个答案:

答案 0 :(得分:4)

您可以使用子查询模拟DENSE_RANK函数:

示例:

SELECT Products.Product,
DENSE_RANK() OVER (ORDER BY Products.Code DESC) AS Rank
FROM Products;

在SQLite中:

SELECT Product,
(SELECT COUNT()+1 FROM (
    SELECT DISTINCT Code FROM Products AS t WHERE Code < Products.Code)
) AS Rank
FROM Products;

答案 1 :(得分:0)

2018年更新:如果您查看sqlite版本历史,则从3.25版开始支持density_rank(以及其他窗口功能)。

https://www.sqlite.org/changes.html