MySQL Forums. Débutant. Comment faire une moyenne mobile de 3 mois avec Mysql J'ai décomposé et simplifié la requête SQL à ce qui suit: SELECT b. LastDayOfMonth, (SELECT Avg (t2.SumSumNoOfDaysOpen) FROM t AS t2 WHERE t2.LastDayOfMonth Entre DATEADD (b. LastDayOfMonth, INTERVAL 3 MOIS) ET b. LastDayOfMonth) AS MovingAverageOver3Months FROM t AS b 1146 - La table sql3.b n'existe pas Voici la table table t LastDayOfMonth SumCountID SumSumNoOfDaysOpen 2003-07- 31 00:00:00 1 70 2003-08-31 00:00:00 0 0 2003-09-30 00:00:00 0 0 2003-10-31 00:00:00 0 0 2003-11-30 00 : 00: 00 2 170 2003-12-31 00:00:00 0 0 2004-01-31 00:00:00 0 0 2004-02-29 00:00:00 2 178 2004-03-31 00:00 : 00 0 0 2004-04-30 00:00:00 2 32 2004-05-31 00:00:00 0 0 2004-06-30 00:00:00 1 98 2004-07-31 00:00:00 0 0 2004-08-31 00:00:00 3 166 2004-09-30 00:00:00 5 388 2004-10-31 00:00:00 3 229 2004-11-30 00:00:00 1 72 2004-12-31 00:00:00 0 0 2005-01-31 00:00:00 2 109 2005-02-28 00:00:00 0 0 2005-03-31 00:00:00 1 126 2005- 04-30 00:00:00 2 231 2005-05-31 00:00:00 0 0 2005-06-30 00:00:00 0 0 2005-07-31 00:00:00 1 139 Note additionnelle: I (T2.SumSumNoOfDaysOpen)) (somme (t2.SumCountID)) une fois que je reçois cette correction. J'ignore quelle plate-forme DBMS est utilisée. Mais dans tous les cas Joe a réussi à répondre il ya plus de 10 ans avec SQL standard. Joe Celko SQL Puzzles et Réponses citation: Cette dernière tentative de mise à jour suggère que nous pourrions utiliser le prédicat pour construire une requête qui nous donnerait une moyenne mobile: La colonne supplémentaire ou l'approche de requête mieux La requête est techniquement mieux parce que l'approche UPDATE sera Dénormaliser la base de données. Toutefois, si les données historiques enregistrées ne vont pas changer et que le calcul de la moyenne mobile est coûteux, vous pouvez envisager d'utiliser l'approche par colonne. SQL requête Puzzle: par tous les moyens uniformes. Vous venez de jeter au godet de poids approprié en fonction de la distance du point de temps actuel. Par exemple quottake weight1 pour datapoints dans 24 heures à partir du point de données actuel weight0.5 pour datapoints dans 48hrsquot. Dans ce cas, il importe combien de points de données consécutifs (comme 6:12 am et 11:48 pm) sont distants les uns des autres Un cas d'utilisation, je peux penser serait une tentative de lisser l'histogramme partout où datapoints ne sont pas denses assez ndash msciwoj May 27 15 at 22:22 Je ne suis pas sûr que votre résultat attendu (sortie) montre classique simple déplacer (rolling) moyenne pour 3 jours. Parce que, par exemple, le premier triple de nombres par définition donne: mais vous attendez 4.360 et sa confusion. Néanmoins, je suggère la solution suivante, qui utilise la fonction de fenêtre AVG. Cette approche est beaucoup plus efficace (claire et moins intensive en ressources) que SELF-JOIN introduit dans d'autres réponses (et Im surpris que personne n'a donné une meilleure solution). Vous voyez que AVG est enveloppé avec le cas lorsque rownum gt p. days alors à forcer NULL s dans les premières rangées, où 3 jours Moyenne mobile est vide de sens. Répondre fév 23 16 at 13:12 Nous pouvons appliquer Joe Celkos dirty left jointure méthode (comme cité plus haut par Diego Scaravaggi) pour répondre à la question telle qu'elle a été posée. Génère la sortie demandée: répondu Jan 9 16 à 0:33 Votre réponse 2017 Stack Exchange, Inc
No comments:
Post a Comment