首页 文章

MySQL:每天计算不同的行数

提问于
浏览 1751
17

我有一个有趣的查询,我需要做 . 我有一个包含 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

2 回答

  • 52
    SELECT  DATE(timestamp) Date, COUNT(DISTINCT ipNum) totalCOunt
    FROM    tableName
    GROUP   BY  DATE(timestamp)
    
  • -2
    $log_date     = date('Y-m-d H:i:s');
    $log_date     = date('Y-m-d H:i:s', strtotime($log_date.' -1 hour'));
    SELECT ipNum, COUNT(ipNum), COUNT(DISTINCT ipNum), DATE(timestamp), timestamp FROM tableName  WHERE `timestamp` > '".$log_date."' GROUP BY ipNum ORDER BY DATE(timestamp) DESC
    

    这会给你一个像样的结果

    ip                  TIME               COUNTIPS
    11.237.115.30     2018-01-27 19:13:51       1
    21.744.133.52     2018-01-27 19:14:03       1
    44.628.197.51     2018-01-27 19:48:12       14
    

相关问题