题目:
表: Triangle
+-------------+------+ | Column Name | Type | +-------------+------+ | x | int | | y | int | | z | int | +-------------+------+ 在 SQL 中,(x, y, z)是该表的主键列。 该表的每一行包含三个线段的长度。
对每三个线段报告它们是否可以形成一个三角形。
以 任意顺序 返回结果表。
查询结果格式如下所示。
示例 1:
输入: Triangle 表: +----+----+----+ | x | y | z | +----+----+----+ | 13 | 15 | 30 | | 10 | 20 | 15 | +----+----+----+ 输出: +----+----+----+----------+ | x | y | z | triangle | +----+----+----+----------+ | 13 | 15 | 30 | No | | 10 | 20 | 15 | Yes | +----+----+----+----------+
解题:
这题我尝试了2次,第一次因为没有搞清三角形的定义,所以写得不对,惭愧惭愧,小学是数学知识“两边之和大于第三边”,都已经还给老师了。
第一次尝试:
select x,y,z,case when x+y>z then 'yes' when x+z > y then 'Yes' when y+z >x then 'Yes' else 'no' end as triangle from Triangle
这个SQL错误之处在于,不符合所有的两边之和大于第三边。
第二次尝试,对的:
select x,y,z,case when x+y>z and x+z > y and y+z >x then 'Yes' else 'No' end as triangle from Triangle