SQL子查詢語法 產品銷售分析III Leetcode #1070

更新 發佈閱讀 7 分鐘

題目敘述

題目會給我們兩張資料表,第一張是Sales,第二張是Product。

第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key

Table: Sales

+-------------+-------+
| Column Name | Type |
+-------------+-------+
| sale_id | int |
| product_id | int |
| year | int |
| quantity | int |
| price | int |
+-------------+-------+
(sale_id, year) is the primary key (combination of columns with unique values) of this table.
product_id is a foreign key (reference column) to Product table.
Each row of this table shows a sale on the product product_id in a certain year.
Note that the price is per unit.


第二張是Product表格,裡面分別有product_id 、 product_name 等欄位。其中 product_id做為主鍵Primary key

Table: Product

+--------------+---------+
| Column Name | Type |
+--------------+---------+
| product_id | int |
| product_name | varchar |
+--------------+---------+
product_id is the primary key (column with unique values) of this table.
Each row of this table indicates the product name of each product.


要求我們,以第一次銷售出去的年份為基準,
列出銷售出去的 product_idyearquantity, 和 price。


輸出的順序不拘


詳細的題目可在這裡看到


測試範例

Example 1:

Input: 
Sales table:
+---------+------------+------+----------+-------+
| sale_id | product_id | year | quantity | price |
+---------+------------+------+----------+-------+
| 1 | 100 | 2008 | 10 | 5000 |
| 2 | 100 | 2009 | 12 | 5000 |
| 7 | 200 | 2011 | 15 | 9000 |
+---------+------------+------+----------+-------+

Product table:
+------------+--------------+
| product_id | product_name |
+------------+--------------+
| 100 | Nokia |
| 200 | Apple |
| 300 | Samsung |
+------------+--------------+

Output:
+------------+------------+----------+-------+
| product_id | first_year | quantity | price |
+------------+------------+----------+-------+
| 100 | 2008 | 10 | 5000 |
| 200 | 2011 | 15 | 9000 |
+------------+------------+----------+-------+

演算法

考點主要落在抓取"第一次銷售出去的年份",這邊可以使用subquery,SQL查詢裡面再包著另一個(SQL)子查詢的技巧,找出來。

一般常見的通則樣貌:

SELECT ...欄位 FROM ...表格

WHERE ...欄位 ... 做條件判斷(

包著另一個SQL 查詢語法

)

Subquery教學


每個產品的第一次銷售出去的年分,用SQL語法來寫,其實就是

 SELECT product_id, MIN(year) as year
 FROM Sales
 GROUP BY product_id

其中 MIN(year)就對應到題目所要求的"第一次銷售出去的年分"。

GROUP BY product_id 則是由商品編號product_id去做分群。


程式碼

# Write your MySQL query statement below
SELECT product_id, year AS first_year, quantity, price
FROM Sales
# Select the product id, year, quantity, and price for the first year of every product sold.
WHERE (product_id, year) IN (
 SELECT product_id, MIN(year) as year
 FROM Sales
 GROUP BY product_id
);

關鍵知識點

掌握子查詢的語法與架構

SELECT ...欄位 FROM ...表格

WHERE ...欄位 ... 做條件判斷(

包著另一個SQL 查詢語法

)


Reference:

[1] MySQL by subquery on composite fields - Product Sales Analysis III - LeetCode

留言
avatar-img
留言分享你的想法!
avatar-img
小松鼠的演算法樂園
96會員
427內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
2024/01/01
題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key Table:
Thumbnail
2024/01/01
題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key Table:
Thumbnail
2023/12/29
題目敘述 題目會給我們兩張資料表。 第一張資料表是Employees 裡面分別有id、name等欄位。這張資料表的id是主鍵。 第二張資料表是EmployeeUNI 裡面分別有id、unique_id等欄位。 題目要求我們列出每位員工對應到的Unique ID
Thumbnail
2023/12/29
題目敘述 題目會給我們兩張資料表。 第一張資料表是Employees 裡面分別有id、name等欄位。這張資料表的id是主鍵。 第二張資料表是EmployeeUNI 裡面分別有id、unique_id等欄位。 題目要求我們列出每位員工對應到的Unique ID
Thumbnail
2023/12/26
題目敘述 題目會給我們一張Tweets資料表。裡面分別有tweet_id、content等欄位。這張資料表的tweet_id是主鍵Primary key。 題目要求我們列出所有非法的推文。輸出順序不拘。 非法推文的定義,推文內容的長度超過15個字元。
Thumbnail
2023/12/26
題目敘述 題目會給我們一張Tweets資料表。裡面分別有tweet_id、content等欄位。這張資料表的tweet_id是主鍵Primary key。 題目要求我們列出所有非法的推文。輸出順序不拘。 非法推文的定義,推文內容的長度超過15個字元。
Thumbnail
看更多
你可能也想看
Thumbnail
去歐洲真的是又興奮又緊張。網路上常說歐洲治安不好,行前說明會時領隊也提醒:「不要背後背包,隨身物要放在前面比較安全!」 但出國玩總是想打扮得美美的啊~而且隨身總得帶些實用小物:雨傘、濕紙巾、小瓶水、萬用藥膏……體積雖小,但零零總總裝起來也不少。我在蝦皮購買了這4樣超實用旅遊好物!減緩我的焦慮感。
Thumbnail
去歐洲真的是又興奮又緊張。網路上常說歐洲治安不好,行前說明會時領隊也提醒:「不要背後背包,隨身物要放在前面比較安全!」 但出國玩總是想打扮得美美的啊~而且隨身總得帶些實用小物:雨傘、濕紙巾、小瓶水、萬用藥膏……體積雖小,但零零總總裝起來也不少。我在蝦皮購買了這4樣超實用旅遊好物!減緩我的焦慮感。
Thumbnail
開箱 3 套深受 0-6 歲寶寶喜愛的互動式童書,包含 Bizzy Bear 推拉書、小小音樂大師有聲書、Poke A Dot 泡泡書,有效提升寶寶閱讀興趣與親子共讀時光。搭配蝦皮雙 11 購物攻略,教你如何鎖定免運、折價券、高額回饋,並透過蝦皮分潤計畫,將日常購物開銷轉化為穩定育兒基金,聰明消費。
Thumbnail
開箱 3 套深受 0-6 歲寶寶喜愛的互動式童書,包含 Bizzy Bear 推拉書、小小音樂大師有聲書、Poke A Dot 泡泡書,有效提升寶寶閱讀興趣與親子共讀時光。搭配蝦皮雙 11 購物攻略,教你如何鎖定免運、折價券、高額回饋,並透過蝦皮分潤計畫,將日常購物開銷轉化為穩定育兒基金,聰明消費。
Thumbnail
BigQuery M是 BigQuery 中的一項功能,數據分析師可以使用SQL語句創建、訓練、評估和預測機器學習模型。 在這次實作將使用一個電子商務(Google 商品商店)數據集來運行一些典型的查詢和模型訓練和預測,以讓企業更了解其客戶的購買習慣。
Thumbnail
BigQuery M是 BigQuery 中的一項功能,數據分析師可以使用SQL語句創建、訓練、評估和預測機器學習模型。 在這次實作將使用一個電子商務(Google 商品商店)數據集來運行一些典型的查詢和模型訓練和預測,以讓企業更了解其客戶的購買習慣。
Thumbnail
題目敘述 題目會給我們一張Products資料表。裡面分別有product_id、new_price、change_date等欄位。其中(product_id, change_date)是這張資料表的複合主鍵Primary key。 所有商品預設都是10元。之後若有更新,則以新價格為主。 要求
Thumbnail
題目敘述 題目會給我們一張Products資料表。裡面分別有product_id、new_price、change_date等欄位。其中(product_id, change_date)是這張資料表的複合主鍵Primary key。 所有商品預設都是10元。之後若有更新,則以新價格為主。 要求
Thumbnail
題目會給我們兩張資料表。 第一張是Customer資料表,裡面分別有customer_id 、product_key 等欄位。其中product_key 是這張資料表的外鍵foreign key,關連到第二張Product資料表。 題目還特別提醒,這張資料表可能包含重複的data row
Thumbnail
題目會給我們兩張資料表。 第一張是Customer資料表,裡面分別有customer_id 、product_key 等欄位。其中product_key 是這張資料表的外鍵foreign key,關連到第二張Product資料表。 題目還特別提醒,這張資料表可能包含重複的data row
Thumbnail
題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key
Thumbnail
題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key
Thumbnail
產品履歷 產品履歷是指一個產品從設計、生產、銷售到售後服務的所有資料。它是產品管理的重要工具,可以幫助企業提高產品品質、分析市場表現、提供售後服務。 產品履歷通常包括以下內容: 商品編號:是產品的唯一識別碼,用於追蹤產品的所有流程。 創意編號:是產品的創意來源,相關的圖稿、文字、圖像等。
Thumbnail
產品履歷 產品履歷是指一個產品從設計、生產、銷售到售後服務的所有資料。它是產品管理的重要工具,可以幫助企業提高產品品質、分析市場表現、提供售後服務。 產品履歷通常包括以下內容: 商品編號:是產品的唯一識別碼,用於追蹤產品的所有流程。 創意編號:是產品的創意來源,相關的圖稿、文字、圖像等。
Thumbnail
有兩張資料表格,第一張是顧客資料表,第二張是訂單資料表。請找出所有顧客資料,不管這位顧客有沒有訂購過商品。請列出名字、姓氏、居住城市、訂購明細。注意:可能會有重複的資料點,因為一位顧客可以重複訂購同一件商品。最後依照顧客名字、訂購明細遞增排序。
Thumbnail
有兩張資料表格,第一張是顧客資料表,第二張是訂單資料表。請找出所有顧客資料,不管這位顧客有沒有訂購過商品。請列出名字、姓氏、居住城市、訂購明細。注意:可能會有重複的資料點,因為一位顧客可以重複訂購同一件商品。最後依照顧客名字、訂購明細遞增排序。
Thumbnail
有兩張資料表格,第一張是顧客資料,第二張是訂單資料。請找出名字叫Jill和Eva的客戶資料,並其對應的訂單日期、明細、金額,最後依照顧客號碼由小至大排序。
Thumbnail
有兩張資料表格,第一張是顧客資料,第二張是訂單資料。請找出名字叫Jill和Eva的客戶資料,並其對應的訂單日期、明細、金額,最後依照顧客號碼由小至大排序。
Thumbnail
上一篇我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度
Thumbnail
上一篇我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News