Count Количество строк с отрицательными целыми числами в mysql - PullRequest
1 голос
/ 21 июня 2020

у меня есть столбец с отметкой времени в моей БД, и я хочу суммировать количество строк, которые были переданы, позвольте мне показать вам запрос для этого!

SELECT TIMESTAMPDIFF(MINUTE, `Opened`, NOW()) as PastDue FROM `Task`

не этот запрос возвращает идеальный результат и вернуть все строки, где просрочка отрицательная, а другие положительные

теперь я хочу подсчитать количество отрицательных строк, поэтому я сделал

SELECT COUNT(TIMESTAMPDIFF(MINUTE, `Opened`, NOW())) < 0 as PastDue FROM `Task`

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

1 Ответ

2 голосов
/ 21 июня 2020
COUNT(TIMESTAMPDIFF(MINUTE, `Opened`, NOW())) < 0

- это логическое выражение (проверяющее, меньше ли COUNT 0), которое всегда будет возвращать 0 (ложь), поскольку COUNT должно быть не меньше 0. Вместо этого вы можете сделать SUM результаты теста (поскольку MySQL обрабатывает логические значения как 0 или 1 в контексте numeri c):

SELECT SUM(TIMESTAMPDIFF(MINUTE, `Opened`, NOW()) < 0) as PastDue FROM `Task`

Обратите внимание, что вы можете упростить этот запрос просто сравнить Opened с NOW(), либо в SUM:

SELECT SUM(`Opened` > NOW()) AS PastDue
FROM `Task`

, либо используя COUNT(*) с предложением WHERE:

SELECT COUNT(*) AS PastDue
FROM `Task`
WHERE `Opened` > NOW()

Обратите внимание, что исходя из формулировки вашего вопроса, вы, вероятно, захотите изменить условие с

`Opened` > NOW() 

на

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