Requête SQL "complexe" - SQL/NoSQL - Programmation
Marsh Posté le 03-09-2007 à 09:28:18
SELECT SUM(packets) , timestamp/60 as minute
FROM accounting
WHERE mac_dst='macaddress'
GROUP BY minute
ne connaissant pas les operateur de gestion de date en PGSQL , j'ai fait dnas le sale : timestamp est le nombre de secondes, donc timestamp/60 est le nombre de minutes
par contre, vu la structure de ta table il va etre difficile d'avoir les entree et les sorties d'un coup
Marsh Posté le 03-09-2007 à 10:09:24
syntaxe oracle :
Code :
|
Marsh Posté le 02-09-2007 à 22:34:56
Bonjour,
j'aurais bien besoin d'un coup de main pour une requête PgSQL sur laquelle je bloque légèrement.
J'ai actuellement une table ayant la forme suivante:
Table "accounting"
Column | Type | Modifiers
----------------+-----------------------------+------------------------------------------------------------------------
mac_src | macaddr | not null default '00:00:00:00:00:00'::macaddr
mac_dst | macaddr | not null default '00:00:00:00:00:00'::macaddr
packets | integer | not null
bytes | bigint | not null
stamp_inserted | timestamp without time zone | not null default '0001-01-01 00:00:00 BC'::timestamp without time zone
Indexes:
"acctounting_pk" PRIMARY KEY, btree (mac_src, mac_dst, stamp_inserted)
Pour une adresse MAC donnée, j'aimerais récupérer les traffics entrant et sortant minute par minute.
Actuellement, je procède en 3 temps.
Premièrement, je récupère tout le traffic entrant (SUM(packets), SUM(bytes) ... WHERE mac_dst='macaddress') pour cette adresse MAC.
Ensuite, je récupère tout le traffic sortant (SUM(packets), SUM(bytes) ... WHERE mac_src='macaddress') pour cette adresse MAC.
Enfin, via PHP, j'associe ces valeurs en fonction de l'heure.
J'aimerais faire ces 3 étapes en une seule et donc obtenir une liste contenant stamp_inserted, SUM(output_packets), SUM(input_packets), SUM(output_bytes) et SUM(input_bytes).
Est-ce possible ?
Est-ce plus efficace que ma méthode actuelle ?
Merci d'avance.