Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1412 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête SQL "complexe"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête SQL "complexe"

n°1607362
tirk
Posté le 02-09-2007 à 22:34:56  profilanswer
 

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.

mood
Publicité
Posté le 02-09-2007 à 22:34:56  profilanswer
 

n°1607429
flo850
moi je
Posté le 03-09-2007 à 09:28:18  profilanswer
 

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  

n°1607455
MagicBuzz
Posté le 03-09-2007 à 10:09:24  profilanswer
 

syntaxe oracle :
 

Code :
  1. SELECT to_char(stamp_inserted, 'MI') minutes, sum(decode(mac_src, 'taval', packets, 0)) packets_inpout, sum(decode(mac_src, 'taval', bytes, 0)) bytes_outpout, sum(decode(mac_dts, 'taval', packets, 0)) packets_outpout, sum(decode(mac_dts, 'taval', bytes, 0)) bytes_outpout
  2. FROM trucmuch
  3. WHERE mac_src = 'taval' OR mac_dst = 'taval'
  4. AND to_number(to_char(stamp_inserted, 'H24')) = heuredésirée
  5. GROUP BY to_char(stamp_inserted, 'MI')


Message édité par MagicBuzz le 03-09-2007 à 10:11:43
n°1608654
tirk
Posté le 05-09-2007 à 18:17:47  profilanswer
 

Merci MagicBuzz, j'ai pu adapter à PostgreSQL.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête SQL "complexe"

 

Sujets relatifs
rédation d'un SQL bien durDuplication de tables entre MSDE et SQL server 2000
[SQL Server] Retrouver le login / mot de passe du serveurProb de lancement d'une requete
PB REQUETE SQL POUR SE LOGGER SUR MON SITE[SQL] Probleme avec ORDER BY
pb de requète[SQL - ORACLE] Requete un peu complexe (pour moi)
[ASP - Sql Server 2000] Défi pour trouver une requête complexe[SQL] problème complexe de requête
Plus de sujets relatifs à : Requête SQL "complexe"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR