我需要帮助这个练习,我必须将英语属性翻译成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)
min(长度)或max(长度)中只有一个为正
Answer: MIN(length) * MAX(length) < 0
长度有一个值或空值
Answer: MIN(length) = MAX(length)
这些是正确的吗?我不确定特别是#3,5,6和8。
答案 0 :(得分:2)
长度至少有一个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)
min(长度)或max(长度)中只有一个为正
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
答案 1 :(得分:0)
我会质疑#2。您可能有两个相同的长度值。
对于#3,我不会使用HAVING子句来检查非空值。同样的事情#4。 HAVING 不 是根据标量值检查每行的等效性的正确位置。
#5可能有一些值得措辞的问题。你确定他们的意思是最小和最大而不是分配吗?
#8的措辞也很奇怪。 Null可以是length的值,也可以是没有值。这取决于查询的格式。此外,是否要求您不要使用AND
等运算符。 OR
?
此外,对于大多数数据库平台,NULL被视为“未知”。由于它是未知的,因此无法检查其他值的等效性。如果你不知道Value1
是什么,你就不可能知道它是否与Value2
中的内容相同......