題目會給我們一張資料表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 |
+----+----+----+----------+
主要有兩個考察點。
第一個就是以前學過的三角不等式,三角形的任兩邊相加一定大於第三邊。
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;
Reference: