SQL 函式IF(...)語法 判斷是否為合法的三角形 Leetcode #610

SQL 函式IF(...)語法 判斷是否為合法的三角形 Leetcode #610

更新於 發佈於 閱讀時間約 3 分鐘

題目敘述

題目會給我們一張資料表Triangle。

裡面分別有x、 y、z等欄位,分別代表三個邊長。其中(x、 y、z)做為複合主鍵Primary key

要求我們判斷,每條data row裡面的x, y, z 能否構成一個合法的三角形?

如果可以,返回字串"Yes";如果不行,返回字串"No"


輸出的順序不拘


Table: Triangle

+-------------+------+
| Column Name | Type |
+-------------+------+
| x | int |
| y | int |
| z | int |
+-------------+------+
In SQL, (x, y, z) is the primary key column for this table.
Each row of this table contains the lengths of three line segments.

詳細的題目可在這裡看到


測試範例

Example 1:

Input: 
Triangle table:
+----+----+----+
| x | y | z |
+----+----+----+
| 13 | 15 | 30 |
| 10 | 20 | 15 |
+----+----+----+

Output:
+----+----+----+----------+
| x | y | z | triangle |
+----+----+----+----------+
| 13 | 15 | 30 | No |
| 10 | 20 | 15 | Yes |
+----+----+----+----------+

演算法


主要有兩個考察點。

  1. 聯想到用三角不等式: 兩邊相加大於第三邊 來判斷合法的三角形
  2. 想到SQL中的 IF( ...condition, return value on True, return value on False)來輸出答案。


第一個就是以前學過的三角不等式,三角形的任兩邊相加一定大於第三邊。

image.png

image.png

x + y > z,
y + z > x,
x + z > y
對於合法三角形來說,恆成立​


第二個考察點,聯想到可以使用IF( 布林條件判斷式, True的返回值, False的返回值)來輸出答案。

IF(x + y > z AND y + z > x AND x + z > y, "Yes", "No") AS triangle

程式碼

SELECT *, IF(x + y > z AND y + z > x AND x + z > y, "Yes", "No") AS triangle
FROM Triangle;

關鍵知識點

  1. 聯想到用三角不等式: 兩邊相加大於第三邊 來判斷合法的三角形
  2. 想到SQL中的 IF( ...condition, return value on True, return value on False)來輸出答案。

Reference:

[1] MySQL adding field with IF( ... condition, "Yes", "No" ) statement [w/ Comment] - Triangle Judgement - LeetCode

avatar-img
小松鼠的演算法樂園
95會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言
avatar-img
留言分享你的想法!
題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key Table:
題目敘述 題目會給我們兩張資料表。 第一張資料表是Employees 裡面分別有id、name等欄位。這張資料表的id是主鍵。 第二張資料表是EmployeeUNI 裡面分別有id、unique_id等欄位。 題目要求我們列出每位員工對應到的Unique ID
題目敘述 題目會給我們一張Tweets資料表。裡面分別有tweet_id、content等欄位。這張資料表的tweet_id是主鍵Primary key。 題目要求我們列出所有非法的推文。輸出順序不拘。 非法推文的定義,推文內容的長度超過15個字元。
題目敘述 題目會給我們兩張資料表,第一張是Sales,第二張是Product。 第一張是Sales表格,裡面分別有sale_id、 product_id、year、quantity、price等欄位。其中(sale_id、 product_id)做為複合主鍵Primary key Table:
題目敘述 題目會給我們兩張資料表。 第一張資料表是Employees 裡面分別有id、name等欄位。這張資料表的id是主鍵。 第二張資料表是EmployeeUNI 裡面分別有id、unique_id等欄位。 題目要求我們列出每位員工對應到的Unique ID
題目敘述 題目會給我們一張Tweets資料表。裡面分別有tweet_id、content等欄位。這張資料表的tweet_id是主鍵Primary key。 題目要求我們列出所有非法的推文。輸出順序不拘。 非法推文的定義,推文內容的長度超過15個字元。