我目前有一张桌子,我正在跟踪一系列跟踪此类事件来源的事件。 我目前正在创建一份报告,总结了此类事件的所有不同来源。
表格如下
-------------------------------------
| company_id | source | date |
-------------------------------------
| 156012 | facebook | 2016-08-22|
| 156012 | twitter | 2016-08-22|
| 156012 | facebook | 2016-08-12|
| 160781 | twitter | 2016-07-20|
| 160781 | twitter | 2016-07-20|
我省略了几个字段,这只是示例数据。我正在收集一份报告,按来源向每家公司统计事件。我希望我的报告看起来像这样
| company_id | facebook | twitter |
------------------------------------
| 156012 | 2 | 1 |
| 150781 | 2 | 0 |
目前我正在这样做
select company_id,
sum(if(track.source = 'facebook', 1,0)) as facebook,
sum(if(track.source = 'twitter', 1,0)) as twitter,
from event_tracks as track
group by franchise_id
order by total_clicks desc limit 10;
我想知道是否有更好的方法来做到这一点 源字段可能会采用各种值,因此报告 不适合大型数据。
答案 0 :(得分:1)
if
条件是多余的,因为mysql已经将布尔值评估为1或0.此外,您是不是要选择franchise_id
,这是您要分组的键,而不是{ {1}}?
除非您不关心选择组中的哪个值,否则您应该只选择组中的列:
company_id