如何进行此查询:多个不同的计数

时间:2017-10-23 23:51:21

标签: mysql

我有一个包含以下行的mysql表(我使用的是关系数据库,所以这只是一个示例):

id, start_date, person, how_heard, status

示例数据如下:

1, 2017-01-01, bob, newspaper, attended
2, 2017-02-03, steve, mail, no show
3, 2016-04-12, mary, newspaper, no show
4, 2015-12-12, rick, mail, cancel
...
...

我现在想查询此表,以查看按年分组的每个营销工作的结果。

所以2017年,我想看到报纸有54个独特的人,有2个人参加他们的约会,0个没有节目,1个取消

因此报告的列将是:

year, how_heard, total_appointments, number_cancel, number_no_show, number_attended

我对如何做到这一点很困惑。

这可以用一个查询吗?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。 您需要按年份和how_heard进行分组,并使用CASE语句为其他列提供条件总和。我已经完成了第一个,其余的将是相同的,除了更改等于条件和列名称

select year(start_date) year, 
  how_heard,
  count(1) as total_appointments,
  SUM(case when status = 'attended' then 1 else 0 end) as number_attended      

from campaign
group by year(start_date), how_heard

找一个SQL小提琴here

使用您的测试数据和上述查询

year    how_heard   total_appointments  number_attended
2015    mail        1                   0
2016    newspaper   1                   0
2017    mail        1                   0
2017    newspaper   1                   1