Группировка строки в SQL для отображения количества различных вхождений - PullRequest
0 голосов
/ 06 декабря 2018

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

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.

1 Ответ

0 голосов
/ 06 декабря 2018

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...