ugrás a tartalomhoz

[MySQL] Oldalletöltések és csoportosítás

sandrosdj · 2015. Ápr. 4. (Szo), 09.21
Üdv!

Ezzel a lekéréssel itt megkapom órákra / napokra ... lebontva, hogy hány oldalletöltés történt. Azt vártam, hogy csak az egyszeri oldalletöltéseket számolja (count(loadIp)), de nem.

$starttime/end: unix idő
$divide: a start és end között ennyi másodperces időközök
$items: start/end között ennyi elem legyen maximum /nem releváns/
loadIp (int): IP azonosító
SELECT COUNT(loadIp) AS loads, loadTime AS whenhappened FROM loads WHERE loadTime BETWEEN $starttime AND $endtime GROUP BY loadTime DIV $divide ORDER BY loadTime ASC LIMIT $items
Felvetődött a lehetséges megoldás, miszerint még loadIp szerint is csoportosítani kéne, de ha ezt teszem, akkor az adott intervallumon (start/end) belül maximum 1x szerepel, ez pedig nem jó.

Tehát: egy adott időintervallumban akarom megtudni oldalletöltésekből, hány egyedi látogató volt óránként, naponta, stb.

Milyen ötleteitek vannak, hogyan lehetne megoldani, hogy csak az egyedi látogatók számát tartalmazza a `loads`?

/Ha valami extrém alap dolgot néztem be, elnézést. :)/
 
1

count(distinct ...)

complex857 · 2015. Ápr. 4. (Szo), 18.27
Ha jól értem a kérdést akkor a címben írt kifejezést keresed.

MySQL-ben írhatsz egy "distinct"-et a count() belsejébe a mező kifejezés elé és ilyenkor a számolás értéke az adott kifejezés egyedi előfordulásainak számát adja majd (vagyis hány egyedi ip volt az adott group by-on belül), szóval valami ilyesmi:
SELECT COUNT(DISTINCT loadIp) AS loads, loadTime ...
2

Köszönöm! Pontosan ezt

sandrosdj · 2015. Ápr. 4. (Szo), 18.50
Köszönöm! Pontosan ezt kerestem.

Most jutottam el oda, hogy utánanézzek a count-nak /reggel volt este/. Gondoltam, hogy kb. ennyi lesz. :)