2016-07-08 38 views
0

我有以下设置:MySQL的:选择不同的统计

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

我需要1选择独特reference行)由reference总体计数以及从t_stamp上个月2)单独计数。

结果应该是:

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

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

我怎样才能做到在同一个语句的第二个?

感谢

+0

是该数据集代表问题的正确? – Strawberry

回答

0

可以使用sum实现这种条件计数:

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

哪些可以null,万一有前一个月没有行。如果您想要取代0,则可以使用coalesce(<...>, 0)

+1

不错的一个!从来不知道有可能做出有条件的总和。谢谢! – autarq

0

与使用sum()count()内的if()功能或case语句来计数:

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