Свойства предложения HAVING - PullRequest
2 голосов
/ 15 марта 2011

Мне нужна помощь в этом упражнении, где я должен перевести свойства с английского языка на 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. только одно из min (длина) или max (длина) положительно

    Answer: MIN(length) * MAX(length) < 0 
    
  8. длина имеет одно или нулевое значение

    Answer: MIN(length) = MAX(length)
    

Это правильно?Я не уверен насчет № 3, 5, 6 и 8, в частности.

Ответы [ 2 ]

2 голосов
/ 15 марта 2011
  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. только одно из 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
    
  8. длина имеет одно или нулевое значение

    Wrong Answer: MIN(length) = MAX(length) -- null=null does not return true
    or
    Answer: COUNT(distinct length) <= 1
    
0 голосов
/ 15 марта 2011

Я бы задал вопрос № 2.У вас может быть два одинаковых значения длины.

Для # 3 я бы не использовал предложение HAVING для проверки ненулевых значений.То же самое для № 4.HAVING - это , а не , для проверки эквивалентности каждой строки по скалярному значению.

# 5 может иметь некоторые проблемы, заслуживающие формулировки.Вы уверены, что они имеют в виду мин и макс, а не распределение?

# 8 также странно сформулирован.Ноль может быть значением длины или отсутствием значения.Это зависит от того, как запрос отформатирован.Кроме того, существует ли требование, чтобы вы не использовали операторы, такие как AND & OR?

Кроме того, NULL считается "неизвестным" на большинстве платформ баз данных.Поскольку он неизвестен, его нельзя проверить на эквивалентность с другим значением.Если вы не знаете, что такое Value1, вы не сможете узнать, совпадает ли это с тем, что есть в Value2 ...

...