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

Langage SQL Discussion :

Soustraction entre chiffres de la même table


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Soustraction entre chiffres de la même table
    Bonjour

    Je voudrais savoir l’expression SQL pour l’opération suivante :

    J’ai une table avec les chiffres 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 disposés en colonne.

    Je voudrais formuler une requête afin d'établir un tableau avec le premier chiffre de la table (11) soustrait des chiffres subséquents de sorte à obtenir les chiffres 0 (11-11), 1 (12-11), 2 (13-11), 3 (14-11), 4, 5, 6, 7, 8, 9 dans le nouveau tableau.

    Quelle est la syntaxe SQL pour cette opération ?


    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Je ne comprends pas ce qui te bloque dans ce problème.
    Est-ce la récupération de la première valeur / plus petite valeur ?
    Est-ce la soustraction en elle-même ?

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    vous n'avez pas précisé le SGBD
    Par exemple avec SQL-Server, vous pouvez utiliser la fonction LAG

    Note : 11, 12, 13 etc... sont des nombres

  4. #4
    Candidat au Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Conservation de donnée en mémoire.
    Merci pour vos réactions.

    Ma base de données est avec ACCESS.

    La première donnée n'est pas forcement la plus petite de la série.

    Est-il possible de conserver cette première valeur en mémoire et faire des calculs avec en utilisant les autres chiffres de la série ?

    Merci

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Malheureusement, ACCESS ne supporte pas les fonctions de fenêtrage, ni les fonctions OLAP, ni les requêtes récursives
    Changez de SGBD

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    J'ai une question sur ce que tu veux faire, car je n'ai pas bien compris.
    Les nombres sur lesquels portent la soustraction sont ils dans des colonnes différentes ou dans des lignes différentes d'une même colonne.
    Si c'est la deuxième option, comment détermine tu le nombre 11 (que tu appelle premier chiffre de la table) et comme par défaut une table n'est pas ordonné cela ne nous aide pas.

    Par ailleurs pour la remarque d'escartefigues, il y a un forum Access sur developpez où eventuellement la question aurait sa place.

    Cordialement
    Soazig

  7. #7
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Citation Envoyé par escartefigue Voir le message
    Malheureusement, ACCESS ne supporte pas les fonctions de fenêtrage, ni les fonctions OLAP, ni les requêtes récursives
    Changez de SGBD
    Pour si peu?
    Une solution: tab la table, col la colonne contenant les nombres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT col-(SELECT MIN(col) FROM tab as tcopie) FROM tab ORDER BY col
    Même SQLite peut faire ça, MS EXCEL d’ailleurs!
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par SAYOUSAM Voir le message
    J’ai une table avec les chiffres 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 disposés en colonne.
    Les réponses apportées ici fonctionnement si les données sont en ligne dans une même colonne.
    Je ne suis pas certain que ce soit le cas.

    Sayousam, pouvez-vous fournir un jeu de données ?
    Si possible avec un create table + insert.

  9. #9
    Candidat au Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Soustraction par rapport à une valeur isolée
    Merci pour vos réactions.

    J'explicite ma préoccupation.

    J'ai ma table TTT avec les données suivantes enregistrées séquentiellement dans le champ FFR dans ma base de données AACESS :

    N° FRF
    1 9,3965
    2 9,3550
    3 9,2830
    4 9,2255
    5 9,3460
    6 9,2085

    Lorsque je fais la requête SELECT FRF FROM TTT, évidemment la réponse vient avec les différentes valeurs du champs FRF.

    Lorsque je fais la requête SELECT FRF - FRF FROM TTT, la réponse vient avec 0, 0, 0, 0, 0, 0 puisque chaque valeur est déduite d'elle même.

    Moi, je voudrais obtenir la variation par rapport à la valeur N° 1 c'est à dire 9,3965.

    Ainsi j'obtiendrais 0 pour la valeur N°1 (9,3965 - 9,3965), -0,0415 pour la valeur N° 2 (9,3550 - 9,3965), -0,1135 pour la troisième valeur (9,2830 - 9,3965) et ainsi de suite.

    Je pensais à une requête du genre SELECT FRF - FRF[1] FROM TTT mas cela ne fonctionne pas puisque les valeurs ne sont pas enregistrées séparément au préalable.

    Quelle est syntaxe appropriée pour cette opération ?

    Merci encore pour vos réactions.

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    As tu une colonne N°? comme tu sembles l'écrire, ou est-ce une façon de présenter les choses.
    Avec une colonne N° on arrivera à faire quelque chose pour trouver la première valeur il suffit de prendre celle dont le N° est le plus faible.

    Cordialement
    Soazig

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Je ne sais pas si Access sait gérer ce genre de requête toutefois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      select Numero
           , FRF - (select FRF from TTT where Numero = (select min(Numero) from TTT))
        from TTT
    order by Numero;
    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        select TTT.Numero
             , TTT.FRF - Tmin.FRF
          from TTT
    cross join (select FRF from TTT where Numero = (select min(Numero) from TTT)) Tmin
      order by TTT.Numero;

  12. #12
    Candidat au Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par soazig Voir le message
    As tu une colonne N°? comme tu sembles l'écrire, ou est-ce une façon de présenter les choses.
    Avec une colonne N° on arrivera à faire quelque chose pour trouver la première valeur il suffit de prendre celle dont le N° est le plus faible.

    Cordialement
    Soazig

    OUI, j'ai une colonne N° générée automatiquement par le système lors de l'enregistrement des données. C'est la clé primaire de la table.

  13. #13
    Candidat au Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Janvier 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Je ne sais pas si Access sait gérer ce genre de requête toutefois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      select Numero
           , FRF - (select FRF from TTT where Numero = (select min(Numero) from TTT))
        from TTT
    order by Numero;
    Ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        select TTT.Numero
             , TTT.FRF - Tmin.FRF
          from TTT
    cross join (select FRF from TTT where Numero = (select min(Numero) from TTT)) Tmin
      order by TTT.Numero;
    --------------------------------------------

    Merci Waldar, ça fonctionne.

    Merci à tous les participants.

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

Discussions similaires

  1. Comparaison entre lignes d'une même table.
    Par jules700 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/01/2011, 10h42
  2. [AC-2007] Opération entre cellule dans une même table
    Par Mat08 dans le forum Modélisation
    Réponses: 4
    Dernier message: 05/08/2009, 09h17
  3. synchro entre 2 forms utilisant la même table
    Par Ever dans le forum Access
    Réponses: 2
    Dernier message: 23/03/2006, 20h53
  4. Réponses: 2
    Dernier message: 22/01/2006, 01h11
  5. Soustraction entre 2 tables...
    Par Mathouxxx dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/10/2005, 22h38

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