Filtrer les données d'une BD et faire des traitements

pink90 Messages postés 34 Date d'inscription lundi 25 avril 2011 Statut Membre Dernière intervention 18 juin 2013 - 18 juin 2013 à 18:01
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 - 1 août 2013 à 10:03
Salut tout le monde

je vais expliquer ce que j'ai écrit dans le titre, et je m'excuse si mon sujet est trop long alors j'ai une table dans la base de données nommée "supervision" qui a la structure suivante:

DATE_
OPERATEUR
SENS
SERVICE
NOMBRE_APPELS
DUREE
MONTANT 
TYPE


j'ai une interface Java(Swing) qui permet à l'utilisateur de choisir une 'Date de début' et une 'Date de fin' et stocke les données comprises entre ces deux dates quelque part (je m’intéresse à 4 champs seulement: DATE, OPERATEUR, DUREE, TYPE.

Voici ma requête:
SELECT DATE_, OPERATEUR, DUREE, TYPE
FROM SUPERVISION WHERE DATE_ BETWEEN date_debut AND date_fin ORDER BY DATE_, OPERATEUR


1)-Si vous avez des idées où placer les données comprise entre date début et date fin (j'ai pensé à créer une table temporaire et la remplir à chaque fois que l'interface est lancée et faire un trigger before insert pour la vider afin de la remplir à nouveau et je sait pas si je peut faire ça à l'aide d'une liste ou tableau )

les données que je doit recevoir après cette requête sont de la forme:(bien sur j'ai des milliers d'enregistrements c'est juste un simple exemple)

Date        OPERATEUR   DUREE   TYPE
2013-01-01  operateur1  200     IN
2013-01-01  operateur1  300     OUT
2013-01-01  operateur1  3       IN
2013-01-01  operateur2  2       IN
2013-01-01  operateur2  3       OUT 
2013-01-01  operateur2  800     IN
2013-01-01  operateur3  200     OUT
2013-01-01  operateur3  100     IN
...............


2)-je veut recevoir un rapport me disant comme quoi pour operateur1 il y'a une durée anormale: 3 car elle est très petite par rapport à 200 et 300, et pour oprateur2 la valeur anormale c'est 800 car elle est très grande par rapport à 2 et 3 .... et ainsi de suite jusqu'à ce qu'il parcourt toute la table(bien sur ces valeurs seront détectées à l'aide d'une formule mathématique).

mon souci est: comment dire à mon algorithme que je veut appliquer une formule mathématique aux DUREE correspondantes à chaque opérateur à part et pas à l'ensemble des durées ? et comment accéder au DUREE en gardant la correspondance entre date, operateur, duree et type genre je reçoit un rapport contenant la toute la ligne ou se trouve la DUREE anormale détectée par ma formule

voilà où je suis bloquée et j'ai mal à la tête à cause de ça

je suis désolée encore une fois pour ce LONG sujet et je vous remercie pour l’intérêt que vous porterez à mon problème

1 réponse

cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
1 août 2013 à 10:03
Oula ça date....
j'ignore si le sujet est encore d'actualité...

En premier lieu, je te dirais de d'abord trier tes résultats de recherche (via des GROUP BY) de cette manière tu peux avoir tout les tupples pour un operateur en un block...
si l'operateur change, tu sais que tu as eu toutes les infos du précédant opérateur.

ensuite je pense que tu dois faire des stats...
calculer l'écart type de tes durées et voir si en fonction d'un delta choisi, les durées sont normales ou non...

j'ignore si j'ai été clair ^^
0
Rejoignez-nous