MySQL查询聚合执行活动的用户

时间:2010-08-12 21:29:45

标签: sql mysql

我在用户活动的mysql表上编写查询时遇到问题,这会让我了解用户的活跃程度。表结构如下:

CREATE TABLE IF NOT EXISTS `ca_activity` (
  `id` bigint(20) NOT NULL auto_increment,
  `user_id` bigint(20) default NULL,
  `activity_type` varchar(50) collate utf8_unicode_ci default NULL,
  `activity_source` varchar(255) collate utf8_unicode_ci default NULL,
  `created` timestamp NULL default NULL,
  `updated` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2037 ;

我正在寻找的结果是执行每项活动的用户数量,按活动数量分组。例如,12330个用户执行了1个活动,9032个用户执行了2个活动,依此类推。我完全坚持这一点,所以任何提示都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

您可以使用嵌套的GROUP BY:

SELECT number_of_activities, COUNT(*) AS cnt
FROM
(
   SELECT COUNT(*) AS number_of_activities
   FROM ca_activity
   GROUP BY user_id
) T1
GROUP BY number_of_activities
ORDER BY number_of_activities