Bonjour,
J'ai le code suivant qui me renvoie un classement de produits en fonction d'une moyenne, représentant le nombre de défauts :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
with
moy as (select res_ligne, res_prod, to_char(res_date, 'YYYYMM') as mois, exp(avg(ln(res_defaut))) as moy_geo
 from tbl_resultat_res
 group by res_ligne, res_prod, to_char(res_date, 'YYYYMM')),
 class as(
 select res_ligne, res_prod, mois, moy_geo,
 case
 when moy_geo <=1250 then 'A'
 when moy_geo > 1250 and moy_geo <= 1500 then 'B'
 when moy_geo > 1500 and moy_geo <= 1750 then 'C'
 when moy_geo > 1750 and moy_geo <= 2000 then 'D'
 else 'E'
 end as class
 from moy)
 select * from class ;
Maintenant, je voudrais introduire un système de rattrapage du genre :
soit : si un produit est classé en B, C, D ou E et si sur les 3 derniers mois 7 comptages de défauts sur 9 sont inférieur à 1250 alors je le surclasse, c'est-à-dire que de B je le passe en A, un C en B, etc.

Voici un exemple de données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
ligne     produit       date                  defaut     moy             classement
ligneA    993001    07/02/11 00:00    1710        
ligneA    993001    18/02/11 00:00    1687        
ligneA    993001    23/02/11 00:00    1249    1533.055498    B
 
ligneA    993001    07/03/11 00:00    1334        
ligneA    993001    18/03/11 00:00    728        
ligneA    993001    23/03/11 00:00    954    974.8666074    A
 
ligneA    993001    06/04/11 00:00    856        
ligneA    993001    15/04/11 00:00    1005        
ligneA    993001    27/04/11 00:00    934    929.6701802    A
 
ligneA    993001    04/05/11 00:00    974        
ligneA    993001    13/05/11 00:00    989        
ligneA    993001    26/05/11 00:00    1111    1022.876268    A
 
ligneA    993001    07/06/11 00:00    1167        
ligneA    993001    13/06/11 00:00    1212        
ligneA    993001    29/06/11 00:00    1400    1255.742242    B==>A
Le dernier est rattrapable car sa moyenne est supérieure au seuil, mais sur les 9 résultats de comptage des mois précédents (mars avril mai) le calcul de la moyenne, au moins 7 (8 ici dans l’exemple) sont inférieurs à 1250

Des idées?