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 :
Maintenant, je voudrais introduire un système de rattrapage du genre :
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 ;
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
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
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
Des idées?
Partager