1795. Rearrange Products Table
1795. Rearrange Products Table本題主要考驗將資料 橫轉直 用法這邊使用UNPIVOT 來解題
Rearrange Products Table
透過leetcode 1795Rearrange Products Table來練習
使用table
product_id 是該表的主鍵。此表中的每一行表示產品在 3 個不同商店的價格:store1、store2 和 store3。如果該產品在商店中不可用,則該商店的列中的價格將為空。
題目說明:編寫一個 SQL 查詢來重新排列 Products 表,以便每一行都有(product_id、store、price)。如果商店中沒有產品,請不要在結果表中包含具有該 product_id 和商店組合的行。
以任意順序返回結果表。
查詢結果格式如下例所示。
解題:以下為第一個解法
select product_id,store,pricefrom ( select product_id,store1,store2,store3 from Products) as tmpUNPIVOT(price for store ...
197. Rising Temperature
197. Rising TemperatureFix Names in a Table
透過leetcode 197Rising Temperature來練習
使用table
id 是該表的主鍵。此表包含有關某一天的溫度的信息。
題目說明:編寫 SQL 查詢以查找與之前日期(昨天)相比溫度較高的所有日期。order by Id
按任意順序返回結果表。
查詢結果格式位於以下範例中。
解題:以下圖解為第一個例題
使用datediff來解題datediff函數可以算出輸入的日期相隔天數
select T.idfrom Weather T, Weather Ywhere datediff(day, T.recordDate, Y.recordDate) = -1and T.temperature > Y.temperature;
以下圖解為第二個例題(失敗)
SELECT M.id FROM Table_2 Minner join Table_2 A on cast(convert(varchar(10),A.recordDate,112) as int) + 1 = cast(co ...
1581. Customer Who Visited but Did Not Make Any Transactions
1581. Customer Who Visited but Did Not Make Any Transactions(資訊來自於leetcode 1581 Customer Who Visited but Did Not Make Any Transactions)
訪問但未進行任何交易的客戶編寫一個 SQL 查詢來查找在沒有進行任何交易的情況下訪問的用戶的 ID 以及他們進行此類訪問的次數。
返回按任意順序排序的結果表。
題目:id = 23 的客戶訪問過一次商城,並在訪問期間進行了一筆交易id = 12.id = 9 的客戶訪問過一次商場,在訪問期間 id = 13進行了一次交易。 id = 30 的客戶訪問過一次商場,沒有進行任何交易。
id = 54 的客戶訪問了該商場 3 次。在 2 次訪問期間,他們沒有進行任何交易,在一次訪問期間,他們進行了 3 次交易。id = 96 的客戶訪問過一次商場,沒有進行任何交易。正如我們所見,ID 為 30 和 96 的用戶在沒有進行任何交易的情況下訪問了該商場一次。此外,用戶 54 兩次訪問該商場,沒有進行任何交易。
解題方式:sele ...
Priority Queue(優先佇列)
Priority Queue(優先佇列)介紹Priority Queue是一種特殊類型的資料結構,其中每個元素都有一個與之關聯的優先級或權重,並且根據其優先級來決定存取和刪除元素的順序。不同於一般的佇列(Queue),Priority Queue不一定是先進先出(FIFO)的,而是根據元素的優先級來決定處理的順序。
優先級該如何比較? 優先級通常根據事先定義的比較函數(Comparator)或物件本身的內部屬性來決定,並且越小或越大的元素視為優先級越高,取決於具體的實現方式。
Priority Queue在許多應用場景中都是非常有用的,例如作業系統中的進程調度、路由協議中的路徑選擇、圖形算法中的最小生成樹、現實生活中醫院急診室中的病人。
Priority Queue通常支持以下基本操作:
插入(Insertion):將一個新的元素插入到Priority Queue中,並根據其優先級進行排序。
刪除最大/最小元素(Deletion):刪除Priority Queue中具有最高/最低優先級的元素,並返回其值。
查找最大/最小元素(Peek):獲取Priority Queue中具有最高/最低 ...
二分搜尋法(Binary search)
二分搜尋法(Binary search)介紹Binary search又稱作二分搜尋法,是查找項目的演算法,那看到二分就知道是將要查找的項目分成兩半做搜尋,直到找到我們要找的目標。
(圖片來自於Binary Search)
不知道大家有沒有玩過猜數字遊戲,假設出題者出了一個數字56,而猜題者要從1~100之間猜數字,直到猜中為止,那當猜題者先猜46,出題者會告訴你比我的數字小,這時範圍就從1~100變成47~100,依此類推直到猜到數字。
我們可以使用二分搜尋法套用在猜數字遊戲上面,步驟為以下:
找到最大值與最小值
找到當前最大值與最小值的平均數(無條件捨去取整數)
假設平均數等於目標數,代表成功了
假設平均數小於目標值,則將最小值設為平均數加一
假設平均數大於目標值,則將最大值設為平均數減一
若無找到目標數則返回第二步驟
複雜度時間複雜度最好
$O(1)$
最壞
$O(logn)$
空間複雜度迭代
$O(1)$
遞迴
$O(logn)$
實戰可以透過leetcode 704binary-search來練習
題目說明:給定一個排序好的陣列,找到目標數的索引位置,找不到則回傳-1 ...
NoSQL Test
NoSQL TestNoSQLQ1. Which types of indexes are available in CosmosDB?
[x] range and spatial
[ ] secondary and primary key
[ ] secondary and spatial
[ ] range and primary key
Q2. You want to connect a DynamoDB stream to AWS Lambda function. Which one of these object do you create?
[ ] DynamoDB table
[x] DynamoDB trigger
[ ] DynamoDB item
[ ] DynamoDB index
Q3. To index a field that holds an array value in MongoDB, which index type do you create?
[ ] partial
[ ] sparse
[ ] compound
[x] multikey
...
運算式表達式(中序、前序、後序)
運算式表達式(中序、前序、後序)運算式(Expression)有三種表示方式:中序式(Infix)、前序式(Prefix)、後序式(Postfix)。一般我們算數學時看到的表達式 A * (B + C) / D,我們知道括號優先算,再來先乘除後加減,這樣的表達式叫(中序Infix)。對於電腦或編譯器來說,解析過於複雜的中序是有難度的,所以有了前序及後序。
中序如何轉換成前序或後序?記住兩個要點
前序就是將運算元移動貼到==左括號==。例如(A+B) => (+AB)
後序就是將運算元移動貼到==右括號==。例如(A+B) => (AB+)
題目一:將 A + B * (C + D) + E / F 轉為前序及後序。
先把運算式所有隱藏的括號加上去,會得出((A + ( B * ( C + D ))) + ( E / F ))
一個個括號接續處理,假如要轉換成前序,就是把願算元放到括號左邊先從最內層的括號開始,(==C== + ==D==) => (+ ==C== ==D==) ; (==E== / ==F==) => (/ ==E== ==F==)目前可以得 ...
最小生成樹(minimum spanning tree,MST)
最小生成樹(minimum spanning tree,MST)介紹最小生成樹(Minimum Spanning Tree,MST)是指在一個帶權無向圖中,找到一棵包含所有節點,權值最小的樹。其中,權值是指樹中所有邊權重的總和。
那甚麼是有向圖甚麼是無向圖?
無向圖(圖片取自於wiki#%E5%9B%BE))無向圖是指其中的邊沒有方向,也就是連接兩個節點的邊沒有特定的起點和終點。以生活例子舉例,社交軟體中用戶之間的關係就可以用無向圖表示,用戶之間的好友關係,每個用戶可以視為一個節點,而好友關係可以視為無向邊。
有向圖(圖片取自於wiki#%E5%9B%BE))有向圖是指其中的邊有方向,也就是從一個節點到另一個節點的邊有明確的起點和終點。一個經典的例子是在網絡傳輸中,路由器之間的連接可以用有向圖來表示,每個路由器可以視為一個節點,而連接可以視為有向邊,表示數據傳輸的方向。
最小生成樹在很多場合都有應用,比如連通無向圖的最小成本設計、最短路徑問題等。下面介紹幾種常見的求最小生成樹的算法:
Kruskal算法Kruskal算法是一種貪心算法,通過按照邊權值從小到大的順序加入圖中的邊,同 ...
607. Sales Person
607. Sales Person(資訊來自於leetcode 607 Sales Person)
銷售人員
order_id 是該表的主鍵列。com_id 是 Company 表中 com_id 的外鍵。sales_id 是 SalesPerson 表中 sales_id 的外鍵。此表的每一行都包含有關一個訂單的信息。 這包括公司的 ID、銷售人員的 ID、訂單的日期和支付的金額。編寫一個 SQL 查詢來報告所有沒有與名稱為“RED”的公司相關的訂單的銷售人員的姓名。
以任意順序返回結果表。
解題方式:select M.name from SalesPerson Mwhere M.name not in (select M.name from SalesPerson Mleft outer join Orders A on M.sales_id = A.sales_idleft outer join Company B on A.com_id = B.com_idwhere B.name = 'RED')
解題解析:我們可以先利用題目給我們的條件,把三個TABLE ...
JSON Test
JSON TestJSONQ1. By convention, what name is used for the first key in a JSON schema?
[ ] schema
[x] $schema
[ ] JsonSchema
[ ] JSONschema
Q2. Which code is the closest JSON equivalent of the data shown?[ 'red', 'blue', 'green']
[ ] A
["red", "blue", "green"]
[x] B
["red", "blue", "green"]
[ ] C
{ "color": "red", "color": "blue", "color&qu ...



