Группировка строки в SQL для отображения количества различных вхождений

У меня есть следующий запрос SQL, который показывает количество кластеров, активных для моих пользователей. На каждый 1 license_key приходится n-число идентификаторов кластера.

select cluster_id, license_key, created_time
    from events
where created_time >= '2018-11-04' and created_time < '2018-12-03'
    and event_name = 'cluster-ping'
group by cluster_id
order by license_key

Это данные:

cluster_id                                  license_key     created_at
___________________________________________|_______________|___________________
6D677C4196DB3C1BA84AEBC55CAEE527DDE498C7    111111111111    2018-11-26 17:17:22
CF7BF31A592030E90DAA2BADD632537FA58CD53A    222222222222    2018-11-09 16:55:38
E9A191A125C6632A87629F13E4532C7D09F6C3EE    333333333333    2018-11-24 09:49:48
B92B9F4CE642638CA71829878D27A68E4B831695    444444444444    2018-11-27 19:44:20
26BDDC912E942CC7347D26CA4D72E28E91348E41    555555555555    2018-11-11 14:10:33
F9ABEBEC93C1181635EDE2A1636D709DFD4D8E13    666666666666    2018-11-21 22:06:06
C7664728E8D0C9CAAD1ECC232DADCE00952412BC    666666666666    2018-11-20 18:04:10
FB716F791CB2C2767DB6DE74CD064E95C1A129EA    777777777777    2018-11-18 11:15:30
B5E6EF80FCBA3D3F4CFBD3E7E0477B8E5232CD05    888888888888    2018-11-18 21:08:05
1B1D17334FADBB4D739CE4A940F63E404014A05C    999999999999    2018-11-24 14:00:07

У меня cluster_ids сгруппирован из-за события cluster-ping, которое звонит домой из кластера каждые 6 часов. Их группировка гарантирует, что я получу только один cluster-ping, который указывает на один активный кластер, вместо cluster-pings всего этого одного кластера, которых может быть много на кластер в зависимости от того, как долго кластер жив.

Я хочу отредактировать этот запрос. Я знаю, сколько раз один и тот же license_key появляется более одного раза. Как видно из приведенного выше примера данных, лицензионный ключ 666666666666666 отображается дважды. Я хотел бы знать в отчете, сколько раз license_key имел n-количество cluster_id.

Я пробовал использовать count(license_key) вместо license_key, но ... это явно не сработало.

Извинения - новинка в SQL.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
29
1

Ответы 1

попробуй это:

SELECT license_key, count(cluster_id) 
FROM (SELECT cluster_id, license_key, created_time
      FROM events
      WHERE created_time >= '2018-11-04'
      AND created_time < '2018-12-03'
      AND event_name = 'cluster-ping'
      GROUP BY cluster_id
      ORDER BY license_key ) 
GROUP BY license_key

Другие вопросы по теме