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 :
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 :
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?