Bonjour
Alors voilà, j'ai un petit soucis pour une requête croisée..
Je possède une table (maTable), contenant 4 champs :
maTable
------------
Numéro_téléphone (varchar2(10))
Profil (varchar2(20))
Débits (Number(6))
Latence (Number(2)) (chiffre de 0 à 63)
Ce que je souhaiterai, c'est obtenir les moyennes des latences ainsi que le nombre de numéros de téléphone en fonction d'un pas de débit (j'entends par là "tous les 1000Ko/s" par exemple), le tout groupé par profil.
Le tableau final doit donc ressembler à ceci :
Idéalement je préfèrerai évidemment avoir dans la case profil1-1M le nombre de numéros et la moyenne des latences, tout ça dans la même case, mais je ne suis pas sûr que ça soit faisable! Voilà pourquoi mon idée était de sortir les colonnes comprenant le nombre de numéros en fonction des profils, et les latences ensuite (donc comme le tableau que je vous ai montré).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 1M 2M 3M 4M 1M 2M 3M 4M Profil1 10 8 19 5 34.3 32.1 54.3 24.5 Profil2 5 6 56 32 6.9 38.6 7.9 21.1 Profil3 23 65 78 4 54.5 43.2 87.4 98.9
Mon soucis se trouve au niveau des moyennes! Je n'arrive pas à calculer les moyennes de mes latences..
Voilà ce que j'ai déjà pour le comptage des numéros (fonctionne bien) :
Pour les moyennes j'avais pensé à quelque chose dans ce style, mais ça m'a l'air foireux.. :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 select profil, count(CASE WHEN debit>=1000 AND debit<2000 THEN 1) AS 1M, count(CASE WHEN debit>=2000 AND debit<3000 THEN 1) AS 2M, count(CASE WHEN debit>=3000 AND debit<4000 THEN 1) AS 3M, count(CASE WHEN debit>=4000 AND debit<5000 THEN 1) AS 4M ## ... Moyennes latences... ## FROM maTable GROUP BY profil ORDER BY profil;
??? Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT profil, (CASE latence WHEN debit>=1000 AND debit<2000 THEN avg(latence)) AS 1M, etc etc..(si bien entendu je peux éviter en plus ce "doublage" de colonnes alors j'en serai ravi
)
Partager