Nifty est un indice boursier pour la bourse nationale de l'Inde. J'ai une base de données nommée livedata dans laquelle le nom de table est astucieux c'est un indice boursier pour la Bourse nationale de l'Inde. J'ai une ligne nommée ID comme clé primaire, heure comme horodatage, cmp pour l'indice de stock astucieux spécifique. Pendant la journée (09:15:01 A. M. à 03:29:59 P. M.) en une seule minute (1), je reçois environ 5 entrées Trade. Je voulais calculer la moyenne mobile Basé sur le dernier cours de clôture pour chaque minute. Pour cela parmi beaucoup d'entrées en une seule (1) minute, je n'exige que la dernière entrée commerciale. Exemple de base Résultat souhaité: - Ex. (Moyenne mobile ADD 20 période c'est-à-dire la dernière entrée commerciale de chaque minute pour les 20 dernières minutes amp diviser par 20. La valeur devrait venir sur le frontend peut être à l'aide de résultat mysqlquery (requête) ou die (mysqlerror ()) s'il vous plaît suggérer .. Si je veux obtenir la dernière entrée de chaque minute comment puis-je écrire le code PHP En ce moment je suis extraire des entrées à l'aide Pouvons-nous utiliser la boucle, tandis que, ne pendant ce temps S'il vous plaît aide rencontré pour résoudre ce grand merci à l'avance. MySQL ne prend pas en charge les fonctions analytiques, ce qui rend les tâches de ce type beaucoup plus difficiles que ce ne serait le cas dans de nombreux autres moteurs RDBMS. À la fois beaucoup plus difficile à comprendre et probablement beaucoup moins efficace qu'un petit raccourci à l'aide d'une variable utilisateur: La requête externe devrait être assez explicite: elle prend juste la moyenne des valeurs cmp de la requête interne. À l'envers sur la table astucieuse, grâce à sa clause ORDER BY utilisant la variable t pour suivre la dernière minute pour laquelle nous avons déjà comptabilisé, la clause WHERE garantit que seules les entrées précédant cette minute sont considérées comme nextmdash tandis que le second terme dans la liste SELECT met à jour T au début de la minute trouvée chaque fois qu'une correspondance est trouvée. Enfin, la clause LIMIT garantit que la requête interne est terminée une fois que le 20e enregistrement a été trouvé. Cette requête serait calculée le plus efficacement s'il existe un index composé dont (time, cmp) sont les colonnes les plus à gauche, dans cet ordre. Par exemple: répondu Feb 11 15 à 19: 37Objectif de sélectionner le cours de clôture moyen des 30 derniers jours de bourse pour chaque action, sur la base de la date d'entrée NON dernière date 1) Si la date d'entrée est 2015-09-18, Cours des 30 derniers jours, par exemple (2015-09-18, 2015-09-17, 2015-09-16. 30 jours) 2) Si la date d'entrée est 2015-09-01, pour sélectionner le cours de clôture moyen des 30 derniers jours de cotation, p. (2015-09-01, 2015-09-31, 2015-09-28. 30 jours) 3) Colonnes de tableau: code de code date ouvert haut bas volume de fermeture 4) Le tableau contient les enregistrements pour seulement TRADING jours, week-ends et jours fériés sont exclus 5) Pour chaque stock, il ya des milliers de jours d'enregistrements, mais nous voulons juste le MA de 30 jours à n'importe quel moment donné EDIT Cette version devrait être flexible et j'espère pas trop lent. Puisque aucune idée de ce qui signifie quoi dans votre table et comment la table est appelée, je suppose une table pricetable avec codeAAA, BBB et donc et fermer signifiant le prix. Votre date doit être 2015-09-12 ici. Remplacez 2015-09-12 avec ce que vous voulez. 30 devrait être le nombre de jours de bourse. Remplacer par ce que vous voulez dans la limite 30. ticker code date ouvrir haut bas fermer volume Utiliser certaines de ces dernières versions si le subselect obtenir trop lent. Vous devez certainement faire une table avec des jours calendaires, et ils obtiennent une colonne pour marquer les jours de bourse. Il serait beaucoup plus facile si elles contiennent également une référence à la 30 jours avant et les 90 jours avant. Ensuite, il devient facile: Vous pouvez remplir cette table du jour calendrier assez facile de votre stock table. EDIT: de cette façon, vous pouvez le remplir au premier demandes de la journée, en supposant que seuls les jours de négociation sont dans ce tableau. Vous pouvez bien sûr essayer de construire dynamiquement une liste des 30 derniers jours de négociation de votre table stockprice, mais cette table a beaucoup de nombreuses entrées par jour, ce qui serait un ralentissement inutile de votre requête - le jour change très rarement, Juste une fois par jour. Vous pourriez même ajouter un déclencheur à votre table de jour de clôture de sorte que sur chaque insertion il vérifiera si les jours de calendrier doivent être remplis. Une version sans cette table ressemblerait à: La table-temp ne sera visible que dans une connexion. Flaschenpost, la solution n'est pas si flexible si je devais faire des variantes par exemple au lieu de 30MA .. i besoin d'un 23 MA. Au lieu de MA proche, je mai besoin MA de volume. toutefois. J'ai trouvé une solution partielle d'ici: sqlinesmysqlhow-togettopneachgroup là est toujours un problème de cette page. Qui est cette ligne. Countryrank: IF (pays du pays actuel, countryrank 1, 1) AS countryrank, currentcountry est alwaus NULL qui se traduit par countryrank toujours 1. Si u peut m'aider à résoudre le problème à partir du lien i aura la solution finale pour partager ndash user6890 Sep 19 15 à 12:31 user6890 J'aime les variables, je ne peux pas voir pourquoi ils sont nécessaires ici. Votre demande est approximative pour les 30 derniers jours d'une date donnée. Avez-vous besoin pour une liste de jours, je veux dire un stock, et la moyenne mobile pour plusieurs dates successives Puis je voudrais aller pour les variables, mais seulement ensuite. Ndash flaschenpost Sep 19 15 à 12:57
No comments:
Post a Comment