我有以下设置:
-------------------------
| 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
如何在同一声明中完成第二个?
由于
答案 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