MySQL:选择不同的统计数据

时间:2016-07-08 12:18:50

标签: mysql sql

我有以下设置:

-------------------------
| reference |   t_stamp |
-------------------------
|         1 | 2016-07-08|
|         1 | 2016-06-10|
|         1 | 2016-06-01|
|         2 | 2016-05-23|
-------------------------

我需要选择唯一的reference行,其中1)总计数为reference,2)上个月与t_stamp的单独计数。

结果应为:

------------------------------------
| reference | overall | last_month |
------------------------------------
|         1 |        3|          2 |
|         2 |        1|          0 |
------------------------------------

第一个很容易 select reference, count(reference) overall from tbl1 group by reference

如何在同一声明中完成第二个?

由于

2 个答案:

答案 0 :(得分:0)

您可以使用sum实现此类条件计数:

sum(month(current_date - interval 1 month) = month(t_stamp))

如果上个月没有行,则可以是null。如果您想要提取0,可以使用coalesce(<...>, 0)

答案 1 :(得分:0)

使用if()case内的sum()函数或count()语句进行条件计数:

select reference,
       count(reference) overall,
       count(if(curdate() - interval 1 month>=t_stamp,1,null)) last_month
from tbl1 group by reference