Sql數量排名

在SQL中,可以使用RANK()DENSE_RANK()ROW_NUMBER()等視窗函式來實現數量排名。下面是一些例子:

  1. 使用RANK()函式:

    SELECT RANK() OVER (ORDER BY quantity DESC) AS rank, quantity
    FROM products
    ORDER BY quantity DESC;

    這個查詢會返回每個產品數量的排名,降序排列。

  2. 使用DENSE_RANK()函式:

    SELECT DENSE_RANK() OVER (ORDER BY quantity DESC) AS dense_rank, quantity
    FROM products
    ORDER BY quantity DESC;

    這個查詢類似於RANK(),但是它會跳過排名中的任何空位,即如果有兩個或多個產品具有相同的數量,它們的排名將連續。

  3. 使用ROW_NUMBER()函式:

    SELECT ROW_NUMBER() OVER (ORDER BY quantity DESC) AS row_number, quantity
    FROM products
    ORDER BY quantity DESC;

    這個查詢會返回一個連續的序列號,從1開始,表示每個產品數量的順序。

請注意,這些函式都是視窗函式,它們不會改變原始數據集的順序,而是為每個分組或整個結果集中的每個行生成一個新的排名值。你可以根據需要選擇使用哪個函式。