Пользователи агрегации запроса 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 ;

Результатом, который я ищу, является число пользователей, которые выполнили каждое количество операций, сгруппированных количеством операций. Например, 12 330 пользователей выполнили 1 действие, 9032 выполнил 2 операции и так далее. Я полностью застреваю на этом так, любые подсказки ценились бы.

1
задан Justin Lucas 12 August 2010 в 21:29
поделиться

1 ответ

Вы можете использовать вложенные 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
2
ответ дан 2 September 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: