soporta - MySQL: Cuenta las distintas filas por día
optimizar consultas sql server (2)
Tengo una consulta interesante que necesito hacer. Tengo una tabla con una columna INT
que contiene números de dirección IP (usando INET_ATON
) y una columna de timestamp
. Quiero poder contar el número de columnas de direcciones IP únicas que hay por día. Es decir, cuántas filas ip distintas hay en cada día. Entonces, por ejemplo, si una dirección IP está en el mismo día dos veces, cuenta como 1 en el recuento final, sin embargo, si la misma dirección IP está en otro día, se contará, habrá una segunda cuenta para ella.
Datos de ejemplo:
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
SELECT DATE(timestamp) Date, COUNT(DISTINCT ipNum) totalCOunt
FROM tableName
GROUP BY DATE(timestamp)
$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
ESTO TE DARÁ UN RESULTADO COMO
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