MySQL 计算最大组数

标签 mysql

我今天早些时候问了一个类似的问题,但我遇到了另一个需要帮助的问题。

我有一个日志系统,可以扫描服务器并对在给定时刻在线的每个用户进行分类。这是我的表格的样子:

-----------------
|    ab_logs    |
-----------------
|      id       |
|    scan_id    |
|  found_user   |
-----------------

id 是一个自动递增的主键。除此之外没有任何实际值(value)。

scan_id 是一个整数,每次成功扫描所有用户后递增。这样我就可以将不同扫描的结果分开。

found_user。存储在扫描期间发现哪些用户在线。

以上将生成一个如下所示的表格:

id  |  scan_id  | found_user
----------------------------
1   |     1     |   Nick
2   |     2     |   Nick
3   |     2     |   John
4   |     3     |   John

所以在第一次扫描系统时发现只有 Nick 在线。 2 日,它找到了尼克和约翰。 3 日,只有约翰还在线。


我的问题是我想在每次扫描时获取连接到服务器的唯一用户总数。换句话说,我想要每次扫描时连接的用户总数。思考计数器。

从上面的例子来看,我想从sql中得到的结果是:

1
2
2

编辑:

这是我到目前为止尝试过的方法,但它是错误的:

SELECT COUNT(DISTINCT(found_user)) FROM ab_logs WHERE DATE(timestamp) = CURDATE() GROUP BY scan_id

我试过的结果是这样的:

1
2
1

最佳答案

下面的代码应该会给你你正在寻找的结果

select s.scan_id, count(*) from
  (select distinct
    t.scan_id
    ,t1.found_user 
  from 
    tblScans t
    inner join tblScans t1 on t.scan_id >= t1.scan_id) s
group by
  s.scan_id;

这里是 sqlFiddle
它假定名称是唯一的,并且在计数中包括当前和以前的每一次扫描

关于MySQL 计算最大组数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28698615/

相关文章:

php返回未定义的属性

MySQL:来自字符串拆分的动态 "IN"子句

mysql - 加入两个表并从第二个表中读取两条记录

php - Mysql MATCH AGAINST空字段给出所有结果

php - 如何将一个数组放入另一个数组中?

php - 从 MySQL 到 PHP 的 boolean 值 - 转换为tinyint并进行比较

php - 将字符串转换为数组并从该数组中获取值

php - 为玩家数量可变的多人游戏设计 MySQL 表

php - 这个sql语句怎么写

php - 我的 sql select 语句结果不正确