entrée: sortie: p> Nous devons calculer l'AVG pour les deux mois précédents ... mais là-bas est une condition requise tout en calculant la moyenne ............. Nous n'avons pas besoin de considérer la quantité = 0 en calculant la moyenne ..... p> par exemple : Pendant le mois 3 Idéalement, la moyenne devrait être de 10 + 0/2 = 5 .... mais puisque nous devons ignorer le Qté = 0 ... Donc, pour le mois 3, la moyenne sera 10/1 = 10 .... p> Merci d'avance p> p>
4 Réponses :
Je pense que c'est une moyenne conditionnelle indowo: nullif () code> rendement
null code> pour
0 code> 0 code> Valeurs - quel
avg () code> ignore ensuite. J'ai enveloppé la moyenne de la fenêtre entière avec
coalesce () code>, puisque vous semblez vouloir
0 code> lorsqu'il y a
null code> valeurs uniquement. P> < / p>
de l'étincelle,
Votre sortie ne correspond pas au mois 6, l'AVG sera de 30 + 40/2 = 35 ... Nous n'avons besoin que de deux mois seulement tout en calculant la moyenne
seulement deux? Je vois.
J'ai modifié la plage entre -2 et -1 qui signifie la moyenne actuelle du mois, O.n. Le mois 6 est calculé par la valeur du mois -2 (4) et du mois -1 (5).
en SQL, vous pouvez utiliser les fonctions de fenêtre avec un spécificateur de cadre de fenêtre:
select t.*, coalesce(avg(nullif(qty, 0)) over (partition by item, loc order by month rows between 2 preceding and 1 preceding ), 0) as qty_avg from t;
Il peut être fait en utilisant dans l'étincelle en utilisant Lag fonction et FenêtreFrame < / a> sortie: p>