我有以下 SQL 查询,显示我的用户的事件集群数量。对于每 1 个 license_key,有 n 个 cluster_id。
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-ping
事件每 6 小时从集群回拨一次电话,因此我将 cluster_ids
分组。将它们分组可确保我只获得一个指示一个事件集群的 cluster-ping
,而不是该集群的所有 cluster-ping
,每个集群可能有很多,具体取决于如何只要集群还活着。
我想编辑此查询,我知道同一 license_key
多次出现的次数。正如您在上面的示例数据中看到的,许可证 key 666666666666666 显示了两次。我想在报告中了解 license_key
拥有 n 个 cluster_id
的次数。
我尝试使用 count(license_key)
而不是 license_key
,但是..这显然不起作用。
抱歉 - SQL 新手。
最佳答案
试试这个:
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
关于mysql - 在 SQL 中对一行进行分组以显示不同出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643072/