我需要此练习的帮助,在该练习中,我必须将属性从英语转换为SQL。

问题:

  1. 长度至少有一个0

    Answer: MIN(ABS(length)) = 0
    
  2. 长度有更多的值

    Answer: MIN(length) < MAX(length)
    
  3. 没有长度的空

    Answer: COUNT(*) = COUNT(length)
    
  4. 长度值为正值或负数

    Answer: MIN(length) * MAX(length) > 0
    
  5. 长度在零以上和低于相同的量之上不同

    Answer: MIN(length) = -max(length)
    
  6. 所有长度的值都不同

    Answer: COUNT(DISTINCT length) = COUNT(length)
    
  7. 最小(长度)或最大(长度)中只有一个为正

    Answer: MIN(length) * MAX(length) < 0 
    
  8. 长度具有一个值或无空值

    Answer: MIN(length) = MAX(length)
    

这些正确吗?我不确定尤其是#3、5、6和8。

有帮助吗?

解决方案

  1. 长度至少有一个0

    Answer: MIN(ABS(length)) = 0
    
  2. 长度有更多的值

    Answer: MIN(length) < MAX(length)
    or
    Answer: COUNT(distinct length) > 1
    
  3. 没有长度的空

    Answer: COUNT(*) = COUNT(length)
    
  4. 长度值为正值或负数

    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.
    
  5. 长度在零以上和低于相同的量之上不同

    Answer: MIN(length) = -max(length)
    
  6. 所有长度的值都不同

    Answer: COUNT(DISTINCT length) = COUNT(length)
    
  7. 最小(长度)或最大(长度)中只有一个为正

    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
    
  8. 长度具有一个值或无空值

    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...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top