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

Bases de données Delphi Discussion :

Statistique sur addition de colonnes


Sujet :

Bases de données Delphi

  1. #1
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut Statistique sur addition de colonnes
    Bonsoir,
    pour faire des statistiques sur une colonne je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With AdoQuery1 do
    begin
      SQL.Clear ;
      SQL.add('SELECT Cond, COUNT(*) AS Nombre FROM Table1 GROUP BY Cond');
      Active:=True;
    end;
    Je désire maintenant cummuler les items de la colonne "Cond" à ceux de la colonne "Conv" car ils comportent les memes noms de personnes et faire la meme fonction de statistique dessus.

    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  2. #2
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Je ne sais pas si j'ai été assez clair donc, je développe.

    La colonne "Cond" indique le nom des conducteurs d'un véhicule.
    La colonne "Conv" indique le nom des convoyeurs d'un véhicule.

    Je voudrais savoir combien de fois un gars est sorti avec un véhicule et ce peu importe sa position dans celui-ci.

    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    J'ai cela comme solution, par le biais d'une requête Union:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT PERSONNEL, SUM(SORTIE) AS NB_SORTIE
    FROM (
      SELECT COND AS PERSONNEL, COUNT(*) AS SORTIE
      FROM TABLE1
      GROUP BY COND
      UNION ALL
      SELECT CONV, COUNT(*)
      FROM TABLE1
      GROUP BY CONV
    )
    GROUP BY PERSONNEL;
    Cela fonctionne, mais je me demande si il n'y a pas une solution plus élégante ?

    @+ Claudius

  4. #4
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Cl@udius,
    content de te voir toujours présent...
    Le code que tu m'as donné fonctionne impec, MERCI

    Juste pour apprendre, j'ai du mettre le code sur une ligne, comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.RadioButton6Click(Sender: TObject);
    begin
    With AdoQuery1 do
    begin
      SQL.Clear ;
      SQL.add('SELECT PERSONNEL, SUM(SORTIE) AS NB_SORTIE FROM (SELECT COND AS PERSONNEL, COUNT(*) AS SORTIE FROM TABLE1 GROUP BY COND UNION ALL SELECT CONV, COUNT(*) FROM TABLE1 GROUP BY CONV)GROUP BY PERSONNEL;');
      Active:=True;
     
    end;
    end;
    Y a-t-il moyen de formater ça autrement ?
    Autre question, je souhaite limiter la longueur du champ "personnel" que tu as créé, comment fait on ?

    En tout cas, UN GRAND MERCI
    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Pour "découper" ta chaîne SQL, tu peux procéder ainsi en utilisant Add successivement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    procedure TForm1.RadioButton6Click(Sender: TObject);
    begin
    With AdoQuery1 do
    begin
      SQL.Clear ;
      SQL.add('SELECT PERSONNEL, SUM(SORTIE) AS NB_SORTIE');
      SQL.Add('FROM (SELECT COND AS PERSONNEL, COUNT(*) AS SORTIE');
      SQL.Add('FROM TABLE1 GROUP BY COND');
      SQL.Add('UNION ALL');
      SQL.Add('SELECT CONV, COUNT(*)');
      SQL.Add('FROM TABLE1');
      SQL.Add('GROUP BY CONV)');
      SQL.Add('GROUP BY PERSONNEL;');
     
      Active:=True;
     
    end;
    end;
    [edit] J'oubliais ! Quant à la longeur du champ PERSONNEL en théorie il doit posséder la même longueur que ton champ COND. Mais cela dépend peut-être du SGBD que tu utilise.
    [/edit]

    @+ Claudius

  6. #6
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Ben comme ça, ça me renvois un message d'erreur et ça ne fonctionne pas.

    Mais ce n'est pas trop grave. Par contre cela m'arrangerais vraiment de pouvoir déterminer la longueur (nbre de caracteres) du champ mélangeant "cond" et "conv".

    MERCI à toi pour le temps que tu passe pour moi

    Je viens de voir ton édit... J'utilise Access et la longueur de ce nouveau champ ne correspond pas à la longueur du champ "cond" ou "conv".
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,
    Citation Envoyé par andreditdd
    Ben comme ça, ça me renvois un message d'erreur et ça ne fonctionne pas.
    J'ai dû mal découper la chaîne en éditant le message.

    Citation Envoyé par andreditdd
    Je viens de voir ton édit... J'utilise Access et la longueur de ce nouveau champ ne correspond pas à la longueur du champ "cond" ou "conv".
    Access doit certainement te renvoyer une chaîne 255 caractères et a priori tu n'as pas moyen d'avoir un contrôle sur cette longueur.
    Malatar, si il passe par là, confirmera ou infirmera ceci.

    @+ Claudius

  8. #8
    Membre confirmé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Points : 460
    Points
    460
    Par défaut
    Ok, c'est dommage mais je n'ai pas le choix du type de BDD.

    Encore Merci, @+
    André
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

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

Discussions similaires

  1. statistiques sur 2 colonnes
    Par pimpmyride dans le forum Excel
    Réponses: 4
    Dernier message: 13/03/2012, 09h57
  2. [XL-2003] Addition de colonne variable sur autres feuilles
    Par kalimero95 dans le forum Excel
    Réponses: 4
    Dernier message: 30/06/2010, 16h23
  3. Statistiques sur les colonnes => densité
    Par tibal dans le forum Administration
    Réponses: 12
    Dernier message: 17/05/2010, 16h51
  4. Faire des statistiques sur des colonnes
    Par davdoo91 dans le forum BIRT
    Réponses: 7
    Dernier message: 24/06/2009, 15h22
  5. statistiques sur les lignes et colonnes d'un fichier
    Par ericbareke dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2006, 16h09

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