2016-03-01 1 views
0

Цель создания сообщения - я не могу найти пример случая в соответствии с тем случаем, который я испытываю прямо сейчас, я хотите взять сумму с установленной даты более чем на 1 вместо минус или равна нулюMysql Count dateiff total rows, если значение поля больше 1 и не меньше нуля

Извините, если она уже существовала, отправляя то же самое, потому что она не находит пример подходящего случая. Мне просто нужно пример, в соответствии с примером моего дела

мой дб

id   userid   duedate    status 
1   lexter   2016-01-27   not yet paid 
2   jemmy   2016-02-01   not yet paid 
3   zaya   2016-03-02   already paid 
4   randy   2016-08-09   not yet paid 
5   max    2016-03-08   not yet paid 
6   neo    2016-03-14   already paid 
7   nemo   2016-01-09   not yet paid 

это MySQL запрос

SELECT duedate, 
    current_date() as datenow, 
    count(datediff(current_date(), duedate) as late_payment) as late_payment 
FROM 
    mydb 
WHERE 
    status='not yet paid' 

мой запрос только посчитать все записи, хотя он меньше нуля или больше нуля, и я хочу, чтобы только запись была больше нуля и еще не была оплачена.

ответ

1

Это называется условным подсчетом, и вы можете сделать это через sum() или count(). Вам нужно разместить оператор case или if() внутри группы по функциям. Я покажу пример для подсчета():

SELECT duedate, 
    current_date() as datenow, 
    count(case when datediff(current_date(), duedate) >0 then 1 else null end) as late_payment_count 
FROM 
    mydb 
WHERE 
    status='not yet paid' 
group by duedate, current_date() 

Вы можете упростить условие, потому что datediff(current_date(), duedate) >0 на самом деле так же, как current_date() > duedate.

Если вы заинтересованы в число просроченных платежей только, то вы можете дополнительно упростить запрос как

SELECT duedate, 
    current_date() as datenow, 
    count(*) as late_payment_count 
FROM 
    mydb 
WHERE 
    status='not yet paid' and current_date() > duedate 
group by duedate, current_date() 
+0

спасибо за Ваш ответ это удивительным, но, как считать все записи, где late_payment не равна нулю и> = 1? – SRL

+1

Если вы хотите только одно число, то оставьте только количество в списке выбора и удалите предложение group by. – Shadow

+0

спасибо .. проблема исправить .. – SRL