Question MySQL: compte les lignes distinctes par jour


J'ai une question intéressante à faire. J'ai une table avec un INT colonne contenant les numéros d’adresse IP (en utilisant INET_ATON), et un timestamp colonne. Je veux pouvoir compter le nombre de colonnes d'adresse IP uniques par jour. C'est-à-dire combien de lignes IP distinctes sont présentes chaque jour. Ainsi, par exemple, si une adresse IP se trouve dans le même jour deux fois, elle compte pour 1 dans le décompte final. Cependant, si la même adresse IP se trouve un autre jour, elle sera comptabilisée.

Exemple de données:

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

16
2018-01-07 06:33


origine


Réponses:


SELECT  DATE(timestamp) Date, COUNT(DISTINCT ipNum) totalCOunt
FROM    tableName
GROUP   BY  DATE(timestamp)

48
2018-01-07 06:37



$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  

CECI VOUS DONNERA UN RÉSULTAT COMME

 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

-2
2018-01-27 18:36