mysql - 在 SQL 中对一行进行分组以显示不同出现次数

标签 mysql sql

我有以下 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/

相关文章:

mysql - 如何小计多列

php - 如何在 foreach 循环的每次迭代中更改 post 值

mysql - 从列中的每一行中提取第二个单词

php - MySQL:选择两个表之间不常见的数据

mysql - 通过 Skype for Business 发送消息

mysql - 多个 ON WHERE SQL,无法让它工作

mysql - 更新和插入,重复键

mysql - 从 MySql Workbench 浏览和修改 SQL 转储

C++ 坏内存分配异常

sql - 如何在 Postgres 9.6+ 中生成长度为 N 的随机、唯一、字母数字 ID?