MySQL:计算左行总和小于30的行

时间:2013-02-20 12:50:39

标签: mysql date count sum row

我想计算表中的用户,他们的订阅将在一个月(30天)内到期。这是我的代码:

USER_DB

id         name        exp_date
1          John        2013-03-01
2          Alice       2013-02-25
3          Ken         2013-01-10
4          Elise       2013-04-11
5          Bruce       2013-03-14

根据上面的DB。应该有3个人的订阅即将到期 - 约翰,爱丽丝和布鲁斯。 我不希望肯被视为,因为他不想订阅更多。

这是我的MySQL代码:

SELECT count(id) AS exp_pax, 
       datediff(exp_date,now()) AS day_left 
FROM labour_db 
WHERE day_left<=30

嗯,代码确实只选择了一天中总和小于30但不计算的行。所以,请你的家伙建议我。

此致

3 个答案:

答案 0 :(得分:1)

如果是这种情况,则需要添加条件,以检查exp_date是否小于今天。

SELECT  COUNT(*) totalCount
FROM    user_db 
where   exp_date <= timestampadd(day, 30, now()) AND
        exp_date > NOW()

答案 1 :(得分:1)

如果要计算所有记录,其中(1)到期日期在现在的30天内,(2)到期日期不在现在之前,则使用

SELECT count(*) AS exp_pax 
FROM   user_db 
WHERE exp_date<=timestampadd(day, 30, now())
       AND exp_date >= now();

答案 2 :(得分:0)

删除group by id以获取您的点数。

Count将按预期汇总行,但如果与group by子句结合使用,则会计算每个“组”。例如,您可以有用地按到期日分组。