GeinMedlem sedan sep. 20005 700 inlägg Tabellen ser ut som följer
timestamp user AP
Där timestamp är i unix time.
Ett utdrag ur tabellen kan se ut:
1110459600 000000000053 000B851759A0
1110459600 00000000009D 000B8517FFF0
1110459600 0000000000A1 000B8517FFF0
Data innehåller alla användare som är anslutna till en AP vid en viss tidpunkt.
Timestamp löper med 5 minuters mellanrum. Nu skulle jag vilja ha ut antalet anslutna användare till en given AP med ett tidsintervall på t.ex. 24h.
SELECT timestamp, count( user ) , AP
FROM wlanlog
WHERE AP = "000B851759A0"
GROUP BY timestamp, AP
Ovan ger antalet anslutna användare till AP:n för varje fem minuters intervall men hur får jag ut samma information men för ett godtyckligt intervall?
LarsGMedlem sedan dec. 200012 464 inlägg select t,ap,count(*)
from
(SELECT timestamp/<antalsekunderiDittInterval> as t,AP
FROM wlanlog
WHERE AP = '000B851759A0') dt
GROUP BY t, AP
GeinMedlem sedan sep. 20005 700 inlägg SELECT t, ap, count( * )
FROM (
SELECT timestamp /3600 AS t, AP
FROM wlanlog
WHERE AP = '000B851759A0'
)dt
GROUP BY t, AP
ger samma resultat som
SELECT t, ap, count( * )
FROM (
SELECT timestamp /300 AS t, AP
FROM wlanlog
WHERE AP = '000B851759A0'
)dt
GROUP BY t, AP
redigering/ Det beror väl isåfall på att det är samma användare anslutna? Inga ytterliggare användare mellan tidsintervallen.
Behöver man ta hänsyn till detta annars? Den ska ju inte räkna samma användare flera gånger inom tidsintervallet.
GeinMedlem sedan sep. 20005 700 inlägg Om jag väljer tidsintervallet en månad (2592000 sekunder) så bör jag få ~ 7 rader eftersom det är så långt som datat sträcker sig. Men med sökningen får jag ut 455 rader...
Hur kommer det sig?
LarsGMedlem sedan dec. 200012 464 inlägg Är det Mysql? I så fall är problemet att den inte gör heltalsdivision
SELECT t, ap, count( * )
FROM (SELECT ceil(timestamp /300) AS t, AP
FROM wlanlog
WHERE AP = '000B851759A0')dt
GROUP BY t, AP
GeinMedlem sedan sep. 20005 700 inlägg Kanonbra! Nu verkar det fungera!
Tack!