ugrás a tartalomhoz

Lekérdezés: válaszok száma, átlagosan, percenként, timestamp alapján

EL Tebe · 2011. Ápr. 9. (Szo), 14.31
A címben leírtakat szeretném megvalósítani.

A mysql tábla:
valasz_id
valasz_timestamp
valasz_txt

A helyzet az, hogy el sem tudom kezdeni. :S
Hogyan lehet egyáltalán ezt megoldani? :o
 
1

Lebontás

janoszen · 2011. Ápr. 9. (Szo), 14.48
Neked a GROUP BY kulcsszóra van szükséged, ha jól értem. Tehát lehetne például egy ilyen lekérdezésed:

SELECT COUNT(*) AS cnt FROM tabla GROUP BY CONCAT(DATE(valasz_timestamp), ' ', HOUR(valasz_timestamp), ':', MINUTE(valasz_timestamp));
Ez megmondja percenként, mennyi hozzászólás volt. Arra érdemes figyelni, hogy ez a lekérdezés a lehető legkevésbé sem gazdaságos, tehát ha valahol fel akarod használni ezt az adatot, akkor ne használd a weboldalból, inkább egy INSERT INTO ... SELECT utasítással időnként generáld egy másik táblába.

Namost, ebből átlagot számolni már nem túl nehéz, ehhez egy subqueryt kell alkalmazni, nagyjából így:

SELECT AVG(cnt) FROM (
    SELECT COUNT(*) AS cnt FROM tabla GROUP BY CONCAT(DATE(valasz_timestamp), ' ', HOUR(valasz_timestamp), ':', MINUTE(valasz_timestamp))
) AS t;
Mint az előbb említettem, ha ezt sok adatra vagy gyakran futtatod, akkor a rendszergazda nagyon boldogtalan lesz.

Kitétel: a fenti kódot fejből írtam fel. Semmi garancia nincs arra vonatkozóan, hogy helyes is! Próbáld ki, mielőtt élesbe teszed!
2

ha jól értem..

EL Tebe · 2011. Ápr. 9. (Szo), 15.05
ha jól értem, akkor: percekre konvertálod az adott sor timestamp-jét, és így percekre bontva már csoportosíthatóvá válik, ergo megvan a "percenkénti sorok száma",
majd utána egy átlagot veszel.

Tökjó. :)
Köszi.

Amúgy csak egyetlen alkalommal fog futni ez a lekérdezés, egy verseny ucsó kiértékeléshez kell.
Ráadásul lesz egy elég alapos szűrés, még a csoportosítás előtt, így nem kell nagy mennyiségű adattal dolgozni.
3

Figyelj

janoszen · 2011. Ápr. 9. (Szo), 19.00
Jól érted. Viszont figyelj, mert ez csak azokat a perceket veszi az átlagba, amelyeknél volt comment. Ha az összes percet akarod, akkor egyszerűbb, mert összeadod az összes kommentet és elosztod a percek számával.
4

Igaz!

EL Tebe · 2011. Ápr. 18. (H), 12.48
Ok, köszi!