Разрыв SQL-операторов - PullRequest
       2

Разрыв SQL-операторов

0 голосов
/ 05 октября 2018

Для кого-то, кто начинает использовать более сложные запросы SQL, какие есть полезные советы для интерпретации утверждений и понимания логики, стоящей за ними?

Например, при извлечении данных для визуализации за последние 7 дней:

case when `date` >= SUBDATE(`max_date`, interval 7 day) and
          `date` <= `max_date` 
     then 'Yes' 
     else 'No' 
end

Зачем ему "и date"?В большинстве онлайн-примеров такого нет ... И как можно разбить это на части для ясного понимания того, как каждый элемент способствует утверждению?

Спасибо!

1 Ответ

0 голосов
/ 05 октября 2018

Это слишком долго для комментария.

Ваш код проверяет даты в течение 7 дней с момента максимум в данных.Поскольку вы знаете максимальную дату, они эквивалентны:

`date` >= SUBDATE(`max_date`, interval 7 day) and `date` <= `max_date` 
`date` >= SUBDATE(`max_date`, interval 7 day) 

Второе условие всегда выполняется.Конечно, я предполагаю, что max_date является максимальным значением date.Если нет, то вам нужны оба сравнения.

Это отличается от последних 7 дней, которые большинство людей будут интерпретировать относительно текущей даты.Это было бы больше похоже на:

case when `date` >= SUBDATE(curdate(), interval 7 day) and
          `date` <= curdate()
     then 'Yes' 
     else 'No' 
end

(Примечание: в течение одной недели вы можете захотеть interval 6 day, но я игнорирую граничные условия в логике.) Если date s представляют вещи, которыеслучились, они обязательно в прошлом, поэтому второе сравнение не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...