Я испытываю затруднения при записи запроса на 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 операции и так далее. Я полностью застреваю на этом так, любые подсказки ценились бы.
Вы можете использовать вложенные 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