sqlite ROW_NUMBER 函数 行号

创建日期: 2024-10-14 15:25 | 作者: 风波 | 浏览次数: 17 | 分类: SQL

来源: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;
17 浏览
0 评论