2017-05-17 38 views
1

我要问关于MySQL的多个罪名一些问题,所以IHAVE这样的数据:MYSQL COUNT从DATE数据

| name | date      | act | 
------------------------------------------------ 
| abc | 2014-02-03 07:05:18   | 1 | 
| abc | 2014-02-03 08:05:18   | 1 | 
| abc | 2015-02-03 07:05:18   | 1 | 
| ghi | 2014-02-03 07:05:18   | 1 | 
| ghi | 2015-02-03 07:05:18   | 1 | 
| klm | 2014-02-03 07:05:18   | 1 | 
| klm | 2014-04-01 07:05:18   | 1 | 

然后我要让这样的报告:

| name | count(2014) | count(2015) | 
------------------------------------------------ 
| abc |  2  |  1  | 
| ghi |  1  |  1  | 
| klm |  2  |  0  | 

如何进行计数查询?

+0

日期格式为TIMESTAMP –

+0

多少年的数据是在表中,如果你将与静态的解决方案满足我们就可以使用'CASE' – Susang

回答

5

如果年将是这两个,或一组有限的,你可以做到这一点与条件计数

select name, 
     sum(case when year(date) = 2014 then 1 else 0 end) as count_14, 
     sum(case when year(date) = 2015 then 1 else 0 end) as count_15 
from yourTable 
group by name 

否则,我会建议把今年的行,然后在演示其更改为列层(或枢轴)

select name, year(date), count(*) 
from yourTable 
group by name, year(date) 
+0

正常工作去做,谢谢 –

+0

不客气,g他帮助了! –