Précédent   Forum du club des développeurs et IT Pro > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/12/2012, 11h44   #1
damalaan
Membre confirmé
 
Homme David
Inscription : septembre 2007
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme David
Localisation : France

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : septembre 2007
Messages : 402
Points : 208
Points : 208
Par défaut Requête pour faire un classement avec droit à l'erreur

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?
damalaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h36.


 
 
 
 
Partenaires

Hébergement Web