【问题标题】:Mysql Count datediff total rows if field value more than 1 and not less than zero如果字段值大于 1 且不小于零,Mysql 计数 datediff 总行数
【发布时间】:2016-03-01 09:04:17
【问题描述】:

创建帖子的目的是,我找不到符合我现在遇到的案例的案例示例,我想从到期日起取大于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'

我的查询只计算所有记录,尽管他小于零或大于零,我只希望记录大于零且尚未付款的记录。

【问题讨论】:

    标签: mysql count datediff


    【解决方案1】:

    这称为条件计数,您可以通过 sum() 或 count() 来完成。您需要将 case 语句或 if() 放在 group by 函数中。我将展示 count() 的示例:

    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() 
    

    【讨论】:

    • 感谢您的回复,这很棒,但是如何计算所有 late_payment 不为零且 >=1 的记录?
    • 如果您只需要一个数字,则只在选择列表中保留计数并删除 group by 子句。
    • 如果答案为您的问题提供了解决方案,请将其标记为已接受,以便其他查看者知道问题已解决。
    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多