如何在我的MySQL使用GROUP_CONCAT

我有这个疑问:如何在我的MySQL使用GROUP_CONCAT

select IF(user_name IS NULL or user_name= '', distinct_id, user_name) 

as user_info, event, count(event) as event_count

from mixpanel

where

(mixpanel.event = 'app_open' or

mixpanel.event = 'post_created' or

mixpanel.event = 'create_comment' or

mixpanel.event = 'class_opened' or

mixpanel.event = 'post_read')

AND

class_id = 'AKSJSDKSD'

group by event, user_name, distinct_id

order by user_name desc

,它给了我下面的结果:

+-----------+------------+--------+ 

| user_info | event | event_count |

+-----------+------------+--------+

| Ben Cho | up | 12 |

| Lee Mar | up | 21 |

| Lee Mar | side | 12 |

| Lee Mar | down | 16 |

| Al Gov | up | 14 |

| Al Gov | down | 13 |

| Al Gov | side | 13 |

+-----------+------------+--------+

我需要的是聚集像这样每个用户数据:

+-----------+------------+--------+ 

| user_info | up | down | side

+-----------+------------+--------+

| Ben Cho | 12 | 0 | 0 |

| Lee Mar | 21 | 16 | 12 |

| Al Gov | 14 | 13 | 13 |

+-----------+------------+--------+

我该如何在mySql上实现这个功能?

谢谢!

回答:

从我可以告诉你,你只是想条件聚合。不需要group_concat()

select (case when user_name IS NULL or user_name = '' then distinct_id else user_name 

end) as user_info,

sum(mp.event = ('app_open')) as num_app_open,

sum(mp.event = ('post_created')) as num_post_created,

sum(mp.event = ('create_comment')) as num_create_comment

from mixpanel mp

where mp.event in ('app_open', 'post_created', 'create_comment') and

class_id = '-KtmM9EACwDTR98a_yU9'

group by user_info

order by user_info desc;

以上是 如何在我的MySQL使用GROUP_CONCAT 的全部内容, 来源链接: utcz.com/qa/266651.html

回到顶部