题
我需要此练习的帮助,在该练习中,我必须将属性从英语转换为SQL。
问题:
长度至少有一个0
Answer: MIN(ABS(length)) = 0
长度有更多的值
Answer: MIN(length) < MAX(length)
没有长度的空
Answer: COUNT(*) = COUNT(length)
长度值为正值或负数
Answer: MIN(length) * MAX(length) > 0
长度在零以上和低于相同的量之上不同
Answer: MIN(length) = -max(length)
所有长度的值都不同
Answer: COUNT(DISTINCT length) = COUNT(length)
最小(长度)或最大(长度)中只有一个为正
Answer: MIN(length) * MAX(length) < 0
长度具有一个值或无空值
Answer: MIN(length) = MAX(length)
这些正确吗?我不确定尤其是#3、5、6和8。
解决方案
长度至少有一个0
Answer: MIN(ABS(length)) = 0
长度有更多的值
Answer: MIN(length) < MAX(length) or Answer: COUNT(distinct length) > 1
没有长度的空
Answer: COUNT(*) = COUNT(length)
长度值为正值或负数
Answer: MIN(length) * MAX(length) > 0 or Better Answer: Sign(MIN(length)) * Sign(MAX(length)) > 0 -- Because, with large values of length, multiplying two of them -- together can give you an overflow.
长度在零以上和低于相同的量之上不同
Answer: MIN(length) = -max(length)
所有长度的值都不同
Answer: COUNT(DISTINCT length) = COUNT(length)
最小(长度)或最大(长度)中只有一个为正
Maybe Wrong Answer: MIN(length) * MAX(length) < 0 (0 is not positive) or Answer: MIN(length) <= 0 and MAX(length) > 0 -- IF: one must be positive and the other must be negative -- change <= 0 to < 0
长度具有一个值或无空值
Wrong Answer: MIN(length) = MAX(length) -- null=null does not return true or Answer: COUNT(distinct length) <= 1
其他提示
我会问#2。您可能具有两个相同的长度值。
对于#3,我不会使用have子句检查非挂钩。对于#4的同一件事。有 不是 与标量值相对于标量值检查的正确位置。
#5可能有一些值得措辞的问题。您确定它们的意思是最小和最大,而不是分发?
#8也是奇怪的。零可能是长度的值,也可能是没有价值的值。这取决于查询的形成方式。另外,是否要求您不使用像 AND
& OR
?
此外,NULL在大多数数据库平台上被视为“未知”。由于未知,因此无法检查其与其他值的等效性。如果你不知道什么 Value1
是,您不可能知道它是否与其中的相同 Value2
...
不隶属于 StackOverflow