2009-11-19 10 views
2

J'essaie de créer une instruction SQL pour MySQL. J'ai une série de statistiques pour une gamme de serveurs qui sont rapportés sur une base de demi-heure. J'ai une table de stats avec des colonnes similaires à ceci:collation des statistiques en morceaux de temps

server varchar(64), 
time datetime, 
bytesIn int, 
bytesOut int 

Maintenant, je veux générer une série de rapports qui compilent tous les bytesIn et bytesOut sur une autre période de 1 heure ou 1 jour sur tous les serveurs. ie. Je sais que j'ai besoin de SUM (bytesIn) en tant que bytesIn, SUM (bytesOut) en tant que bytesOut, mais je ne sais pas comment "agréger" tous les temps dans des seaux horaires/quotidiens et aussi retourner ce temps "clumped". C'est, les données renvoyées devrait ressembler à ceci:

Time,bytesIn,bytesOut 
12:00,1024,2048 
13:00,4096,8192 
etc 

Je sais cela devrait être simple, mais je suis perdu. Quelqu'un peut-il aider?

Répondre

4

Peut-être pouvez-vous utiliser la fonction DATE_FORMAT() et le groupement. Voici un exemple, j'espère que vous pourrez vous adapter à vos besoins précis.

SELECT 
    DATE_FORMAT(time, "%H:%i"), 
    SUM(bytesIn), 
    SUM(butesOut) 
FROM 
    stats 
WHERE 
    time BETWEEN <start> AND <end> 
GROUP BY 
    DATE_FORMAT(time, "%H:%i") 

Si la fenêtre de temps couvre plus d'un jour, et que vous utilisez le format exemple, les données de différents jours seront regroupées dans les seaux « heures de journée ». Si les données brutes ne tombent pas exactement à l'heure, vous pouvez lisser en utilisant "%H:00".

+0

Merci! C'est la réponse parfaite, et oui, j'ai dû remplacer% i par 00 afin de lisser les données – cmroanirgo

0

est-ce que quelque chose comme ce travail?

SELECT substr(time, 12, 2) AS time, sum(bytesIn) AS bytesIn, sum(bytesOut) AS bytesOut 
GROUP BY substr(time, 12, 2) 

se fonderait sur votre champ d'horodatage toujours avoir un format standard aaaa-mm-jj-hh.nn.ss, mais je suis sûr que vous pouvez travailler autour de cela avec to_date ou quelque chose - ne savent pas comment vous avez stocké vos horodateurs ...

+0

Les temps sont stockés en tant que 'date/heure'. c'est-à-dire Je vais essayer! – cmroanirgo

Questions connexes