leetcode 1082典型題 ,開窗函式

萌哥-爱学习發表於2024-08-20

示例零:

SELECT seller_id , RANK() OVER( ORDER BY SUM(price) DESC) AS r
,SUM(price) 
FROM Sales 
結果: 返回一條資料 , 沒有partition 關鍵字,等於是全表做order by , 基於全表 做sum 排序 ,
其實這個sql 有問題.

| seller_id | rk | SUM(price) |
| --------- | -- | ---------- |
| 1 | 1 | 6400 |

  

示例 一:

 SELECT seller_id, RANK() OVER( partition by seller_id    ORDER BY SUM(price) DESC) rk 
 ,SUM(price)
    FROM Sales

結果也是返回一條資料
| seller_id | rk | SUM(price) |
| --------- | -- | ---------- |
| 1 | 1 | 6400 |

示例二:

 SELECT seller_id, RANK() OVER(    ORDER BY SUM(price) DESC) rk 
 ,SUM(price)
    FROM Sales
GROUP BY seller_id
結果: 如上sql會返回多條資料, 基於 seller_id 做分組了。



| seller_id | rk | SUM(price) |
| --------- | -- | ---------- |
| 1 | 1 | 2800 |
| 3 | 1 | 2800 |
| 2 | 3 | 800 |

示例三:

 SELECT seller_id, RANK() OVER( partition by seller_id    ORDER BY SUM(price) DESC) rk 
 ,SUM(price)
    FROM Sales
GROUP BY seller_id

| seller_id | rk | SUM(price) |
| --------- | -- | ---------- |
| 1 | 1 | 2800 |
| 2 | 1 | 800 |
| 3 | 1 | 2800 |


產品表:Product

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| product_id   | int     |
| product_name | varchar |
| unit_price   | int     |
+--------------+---------+
product_id 是這個表的主鍵(具有唯一值的列)。
該表的每一行顯示每個產品的名稱和價格。
銷售表:Sales

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| seller_id   | int     |
| product_id  | int     |
| buyer_id    | int     |
| sale_date   | date    |
| quantity    | int     |
| price       | int     |
+------ ------+---------+
這個表它可以有重複的行。 
product_id 是 Product 表的外來鍵(reference 列)。
該表的每一行包含關於一個銷售的一些資訊。
 

編寫解決方案,找出總銷售額最高的銷售者,如果有並列的,就都展示出來。

以 任意順序 返回結果表。

返回結果格式如下所示。

 

示例 1:

輸入:
Product 表:
+------------+--------------+------------+
| product_id | product_name | unit_price |
+------------+--------------+------------+
| 1          | S8           | 1000       |
| 2          | G4           | 800        |
| 3          | iPhone       | 1400       |
+------------+--------------+------------+
Sales 表:
+-----------+------------+----------+------------+----------+-------+
| seller_id | product_id | buyer_id | sale_date  | quantity | price |
+-----------+------------+----------+------------+----------+-------+
| 1         | 1          | 1        | 2019-01-21 | 2        | 2000  |
| 1         | 2          | 2        | 2019-02-17 | 1        | 800   |
| 2         | 2          | 3        | 2019-06-02 | 1        | 800   |
| 3         | 3          | 4        | 2019-05-13 | 2        | 2800  |
+-----------+------------+----------+------------+----------+-------+
輸出:
+-------------+
| seller_id   |
+-------------+
| 1           |
| 3           |
+-------------+
解釋:Id 為 13 的銷售者,銷售總金額都為最高的 2800

相關文章