MySQL: Count the distinct rows per day

前端 未结 3 1799
庸人自扰
庸人自扰 2020-12-03 03:25

I have an interesting query I need to do. I have a table with an INT column containing ip address numbers (using INET_ATON), and a timestamp<

相关标签:
3条回答
  • 2020-12-03 03:39

    Here's how you'd get counts per day for the last 7 days:

    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)
    

    group by the ipNum column first to get distinct counts of that column per day:

    select
        count(*) as count,
        date(timestamp) as date
    from
        tablename
    where
        timestamp >= date_sub(curdate(), interval 7 day)
    group by 
        ipNum, date;
    
    
    0 讨论(0)
  • 2020-12-03 03:42
    $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  
    

    THIS WILL GIVE YOU A RESULT LIKE

     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
    
    0 讨论(0)
  • 2020-12-03 03:47
    SELECT  DATE(timestamp) Date, COUNT(DISTINCT ipNum) totalCOunt
    FROM    tableName
    GROUP   BY  DATE(timestamp)
    
    • SQLFiddle Demo
    0 讨论(0)
提交回复
热议问题