MySQL:每天计算不同的行数

Sam*_*Sam 18 mysql sql time count

我有一个有趣的查询,我需要做.我有一个表,INT其中包含一个包含IP地址编号(使用INET_ATON)和timestamp列的列.我希望能够计算每天唯一的IP地址列数.也就是说,每天有多少不同的ip行.因此,例如,如果一个IP地址在同一天两次,它在最终计数中计为1,但是如果相同的IP地址在另一天,它将被计算,将有第二个计数.

示例数据:

PK | FK  | ipNum      | timestamp
11 | 404 | 219395     | 2013-01-06 22:23:56
7  | 404 | 467719     | 2013-01-06 22:23:41
8  | 404 | 4718869    | 2013-01-06 22:23:42
10 | 404 | 16777224   | 2013-01-06 22:23:56
5  | 404 | 1292435475 | 2013-01-06 22:23:25
12 | 404 | 1526990605 | 2013-01-06 22:23:57
6  | 404 | 1594313225 | 2013-01-06 22:23:40
4  | 404 | 1610613001 | 2013-01-06 22:23:23
9  | 404 | 1628635192 | 2013-01-06 22:23:55
1  | 404 | 2130706433 | 2013-01-06 21:29:38
2  | 407 | 2130706433 | 2013-01-06 21:31:59
3  | 407 | 2130706433 | 2013-01-06 21:32:22
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 54

SELECT  DATE(timestamp) Date, COUNT(DISTINCT ipNum) totalCOunt
FROM    tableName
GROUP   BY  DATE(timestamp)
Run Code Online (Sandbox Code Playgroud)

  • 由于答案在不同的站点上而被拒绝投票,仅通过评论链接,此处没有评论,如果该站点消失了答案可能是什么。 (3认同)

小智 8

以下是获取过去 7 天每天计数的方法:

select
    count(*) as count,
    date(timestamp) as date
from
    tablename
where
    timestamp >= date_sub(curdate(), interval 7 day)
group by 
    date;

+-------------+------------+
| count       | date       |
+-------------+------------+
| #forThatDay | 2020-02-21 |
| #forThatDay | 2020-02-22 |
| #forThatDay | 2020-02-22 |
| #forThatDay | 2020-02-23 |
| #forThatDay | 2020-02-24 |
| #forThatDay | 2020-02-25 |
| #forThatDay | 2020-02-26 |
+-------------+------------+
7 rows in set (0.03 sec)
Run Code Online (Sandbox Code Playgroud)

首先按列分组ipNum以获得该列每天的不同计数:

select
    count(*) as count,
    date(timestamp) as date
from
    tablename
where
    timestamp >= date_sub(curdate(), interval 7 day)
group by 
    ipNum, date;

Run Code Online (Sandbox Code Playgroud)