来源:https://www.sqlitetutorial.net/sqlite-window-functions/sqlite-row_number/
版本要求
来源:https://stackoverflow.com/questions/16847574/how-to-use-row-number-in-sqlite
2018-09-15 (3.25.0)
语法
ROW_NUMBER() OVER (
[PARTITION BY expression1, expression2,...]
ORDER BY expression1 [ASC | DESC], expression2,...
)
通过 ORDER BY
获取行号
SELECT
ROW_NUMBER () OVER (
ORDER BY Country
) RowNum,
FirstName,
LastName,
country
FROM
customers;
通过分组和 ORDER BY
获取行号
SELECT
ROW_NUMBER () OVER (
PARTITION BY Country
ORDER BY FirstName
) RowNum,
FirstName,
LastName,
country
FROM
customers;
分页
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER (
ORDER BY
FirstName
) RowNum,
FirstName,
LastName,
Country
FROM
customers
) t
WHERE
RowNum > 20
AND RowNum <= 30
获取每组的最高值
CREATE VIEW Sales
AS
SELECT
CustomerId,
FirstName,
LastName,
Country,
SUM( total ) Amount
FROM
invoices
INNER JOIN customers USING (CustomerId)
GROUP BY
CustomerId;
SELECT
Country,
FirstName,
LastName,
Amount
FROM (
SELECT
Country,
FirstName,
LastName,
Amount,
ROW_NUMBER() OVER (
PARTITION BY country
ORDER BY Amount DESC
) RowNum
FROM
Sales )
WHERE
RowNum = 1;