IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Cette requete est elle possible ?


Sujet :

MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    pas grand chose
    Inscrit en
    Septembre 2018
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : pas grand chose
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2018
    Messages : 131
    Points : 73
    Points
    73
    Par défaut Cette requete est elle possible ?
    Bonjour

    J ai la table suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE AAPL(
       Date           VARCHAR(10) NOT NULL PRIMARY KEY
      ,Open           NUMERIC(8,4)
      ,High           NUMERIC(8,4)
      ,Low            NUMERIC(8,4)
      ,Close          NUMERIC(8,4)
      ,Adjusted_close NUMERIC(8,4)
      ,Volume         INTEGER 
    );
    J'extrait les 5 dernier enregistrement avec cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `aapl` WHERE `Date` IS NOT NULL order by Date DESC LIMIT 0,5
    ensuite je boucle sur les resultats pour determiner s'il s agit d'une fractal:
    Une fractale est une bougie dont le plus haut (ou le plus bas) est plus haut (ou plus bas) que celui des 2 autres bougies qui l’entourent.
    Une petite image vaut mieux qu un long discours :
    Nom : exemple-fractale-Bill-WIlliams-300x273.png
Affichages : 146
Taille : 2,9 Ko

    J aimerais donc savoir s il est possible de simplifier le travail en exécutant une seule requête qui retournerait un résultat du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SLECT Close si High(date(-1))>High(date) and High(date(-2))>High(date(-1)) and High(date(-2))>High(date(-3)) and High(date(-2))>High(date(-4)) and High (date(-3)) > High(date(-4))
    Il m est impossible d essayer car étant donné que j en ai pas d'id auto auto incrément je ne sais pas comment 'travailler' avec le recul.

    Aussi j aimerais savoir s il est possible de retourner un résultat par défaut, en l occurrence 0, si il ne s agit pas d une fractale.

    Merci de vos conseils et de votre aide.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    C'est possible avec des fonctions analytiques (ou de fenêtrage), sinon c'est nettement plus chiant.
    Elles sont disponibles avec la dernière version de mysql, quelle est votre version ?

    PS, une date en varchar n'est pas une bonne idée.

  3. #3
    Membre régulier
    Homme Profil pro
    pas grand chose
    Inscrit en
    Septembre 2018
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : pas grand chose
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2018
    Messages : 131
    Points : 73
    Points
    73
    Par défaut
    Merci d voir pris le temps de me répondre.

    Pour la date c était une conversion en ligne d un gros ficher csv, j avais pas fait attention, c est modifié.

    Pour la version de mysql, en local j ai 5.7.24.

    Par contre j ai demandé à mon hébergeur (hostinger) qui m a dit utiliser MariaDb 10.2.5.
    Ils me disent que cela ne change rien d ailleurs ils n affichent même pas mariadb dans leur panneau d administration mais toujours mysql....

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Ça ne change rien pour les fonctionnalités de base, mais avec les dernières versions de mysql/mariadb, notamment à partir de mariadb 10.2.2, vous pouvez utiliser lag

    D'une manière générale, essayez d'utiliser la même version sur votre dev en local que sur la prod.

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par NewUserDelphi Voir le message
    Une fractale est une bougie dont le plus haut (ou le plus bas) est plus haut (ou plus bas) que celui des 2 autres bougies qui l’entourent.
    Ça donne quelque chose comme ça, a mettre dans le select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    case when (    high > lead(high) over (order by dte)
               and high > lag (high) over (order by dte)
              )
           or (    low < lead(low) over (order by dte)
               and low < lag (low) over (order by dte)
              )
         then 'VRAI'
         else 'FAUX'
     end as fractale
    PS : J'avais pas vu, mais le mot date est un mot réservé, il ne faut pas l'utiliser comme nom de colonne.

  6. #6
    Membre régulier
    Homme Profil pro
    pas grand chose
    Inscrit en
    Septembre 2018
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : pas grand chose
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2018
    Messages : 131
    Points : 73
    Points
    73
    Par défaut
    Merci, je vais voir cela de plus près durant le week-end.
    Je mets en résolu et reviendrais si je coince mais avec la doc ça devrait le faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cette requête est-elle possible ?
    Par cherche_encore dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/08/2013, 09h55
  2. Cette synthaxe est-elle possible ?
    Par yann123456 dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/04/2010, 17h03
  3. cette requête est-elle possible ?
    Par night_flyers dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2009, 13h12
  4. cette instruction est elle possible ?
    Par poulette3000 dans le forum Débuter
    Réponses: 4
    Dernier message: 06/10/2007, 23h48
  5. cette requette est elle possible?
    Par domino_dj dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/03/2007, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo