gpt4 book ai didi

mysql - 进行聚合查询的不同方法

转载 作者:行者123 更新时间:2023-11-28 23:11:49 25 4
gpt4 key购买 nike

我目前有一张表,我在其中跟踪一堆事件,跟踪此类事件的起源。我目前正在创建一份公司报告,总结此类事件的所有不同来源。

表格如下

-------------------------------------
| 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;

我想知道是否有更好的方法来做到这一点源字段可能取值范围很广,因此报告不太适合更大的数据。

最佳答案

if 条件是多余的,因为 mysql 已经将 bool 值计算为 1 或 0。此外,您是否打算选择 franchise_id,这是您要分组的键by,而不是company_id

除非您不关心从组中选择了哪个值,否则您应该只选择组中的列:

select franchise_id,
sum(track.source = 'facebook') as facebook,
sum(track.source = 'twitter') as twitter,
from event_tracks as track
group by franchise_id
order by total_clicks desc limit 10;

关于mysql - 进行聚合查询的不同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45664834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com