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

DB2 Discussion :

COUNT AS .. donne quel type d objet


Sujet :

DB2

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 4
    Points
    4
    Par défaut COUNT AS .. donne quel type d objet
    Bonjour,

    Excusez moi pour la présentation. Je cherche à additionner et à afficher la valeur des nombres d'une "colonne" (? c'est quoi en fait ) ( data_a_traiter ).

    - J'ai deux tables, table_1 & table_2.

    - Dans table_1, j'ai 3 colonnes colone-1 (BIGINT autoincrement (+1) à chaque enregistrement), colone-2 (VARCHAR) & colone-date (DATE)

    - Dans table_2, j'ai 2 colonnes colone-1 (VARCHAR) & colone-2 (VARCHAR).

    table_1 ressemble à ça :

    Colone-1 colone-2 colone3
    31 data05 2020-03-10
    32 data04 2020-03-10
    33 data11 2020-03-10
    34 data05 2020-03-11
    35 data03 2020-03-11
    36 data07 2020-03-11
    37 data03 2020-03-12
    38 data08 2020-03-13
    39 data10 2020-03-13
    40 data07 2020-03-13
    41 data06 2020-03-13
    42 data02 2020-03-13

    Un identifiant unique dans colone-1, des dataxx colonne-2 et une date dans colone-3

    table_2 ressemble à ça :

    colone-1 colone-2
    data01 data08
    data02 data05
    data03 data03
    data04 data03
    data05 data05
    data06 data05
    data07 data03
    data08 data08
    data09 data03
    data10 data05
    data11 data08

    les dataxx se suivent, mais pas forcement et toutes les dataxx de la colone-1 sont uniques alors que les dataxx de la colone-2 regroupent un nombre déterminé de dataxx de la colone-1. Sur l'exemple on voit toutes

    les dataxx de la colone-2 sont forcément au moins une fois avec les dataxx de la colone-1 qui leur sont égales.

    Regroupement :

    data01 data08
    data08 data08
    data11 data08
    data02 data05
    data05 data05
    data06 data05
    data10 data05
    data03 data03
    data04 data03
    data07 data03
    data09 data03

    La requête permet de regrouper le nombre de data_a_traiter en fonction du regroupement de la colone-2

    exemple de ce qu'elle produit :

    3 data08
    4 data03
    4 data05

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT (table_1.colone-1) AS data_a_traiter, table_2.colone-2
    FROM table_1, table_2
    WHERE table_1.colone-date <= CURRENT_DATE AND table_1.colone-2 = table_2.colone-2
    GROUP BY table_2.colone-2
    ORDER BY data_a_traiter DESC;

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 137
    Points : 1 917
    Points
    1 917
    Par défaut
    Bonjour,

    Je n'ai pas compris la question/le problème. Que cherches-tu à obtenir? Quel résultat souhaites-tu afficher?

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 936
    Points : 4 356
    Points
    4 356
    Par défaut
    BIGINT ? autoincrement ?
    c'est pas du vocabulaire ORACLE DB, donc déjà vous n'êtes pas dans le bon forum…

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    Bonjour,

    Je n'ai pas compris la question/le problème. Que cherches-tu à obtenir? Quel résultat souhaites-tu afficher?
    Oui, désolé je suis complétement autodidacte sur SQL, j'ai eu l'obligation de partir fissa de mon taf vendredi avec l'option de partir sans lancer un message à la mer ou en "balançant" rapidement mon problème, désolé.

    Ma requête me donne le nombre d’occurrences reliées à des regroupements.... C'est pas très claire, mais ce que je veux obtenir en plus c'est le total de la première colonne que j'ai nommée ( data_a_traiter COUNT (table_1.colone-1) AS data_a_traiter, ), combien d'enregistrements j'ai en faisant la somme de cette colonne, ici dans mon exemple 3 + 4 + 4 = 11. Je ne sais pas par où la prendre cette colonne que j'affiche ( c'est quoi son type, sa représentation ? ) ou comment la "manipuler" ? J'ai trouvé une commande COUNT ... AS sur Google et c'était ce que je voulais, mais je ne vois pas comment ça marche pour réutiliser le résultat autrement qu'en affichage alors que j'ai aussi besoin de le dénombrer.

    <<

    La requête permet de regrouper le nombre de data_a_traiter en fonction du regroupement de la colone-2

    exemple de ce qu'elle produit :

    3 data08
    4 data03
    4 data05

    >>

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    BIGINT ? autoincrement ?
    c'est pas du vocabulaire ORACLE DB, donc déjà vous n'êtes pas dans le bon forum…
    Bonjour,

    Ha, désolé, j'utilise DBVisualizer d'Oracle Corporation et je croyais que c'était une base de données Oracle... C'est du DB2, c'est doncIBM, il faut que j'aille sur un forum IBM ?

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Il faudrait aller dans le forum db2 https://www.developpez.net/forums/f1...s-donnees/db2/
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 4
    Points
    4
    Par défaut COUNT xx AS .. donne quel type d objet
    Bonjour,

    Ma requête me donne le nombre d’occurrences reliées à des regroupements.Ce que je veux obtenir en plus c'est le total de la première colonne que j'ai nommée data_a_traiter ( COUNT (table_1.colone-1) AS data_a_traiter, ) dans ma requête SQL.

    - J'ai deux tables, table_1 & table_2.

    - Dans table_1, j'ai 3 colonnes colone-1 (BIGINT autoincrement (+1) à chaque enregistrement), colone-2 (VARCHAR) & colone-date (DATE)

    - Dans table_2, j'ai 2 colonnes colone-1 (VARCHAR) & colone-2 (VARCHAR).

    table_1 peut ressembler à ça :

    Colone-1 colone-2 colone3
    31 data05 2020-03-10
    32 data04 2020-03-10
    33 data11 2020-03-10
    34 data05 2020-03-11
    35 data03 2020-03-11
    36 data07 2020-03-11
    37 data03 2020-03-12
    38 data08 2020-03-13
    39 data10 2020-03-13
    40 data07 2020-03-13
    41 data06 2020-03-13
    42 data02 2020-03-13

    Un identifiant unique dans colone-1, des dataxx colonne-2 et une date dans colone-3

    table_2 ressemble à ça :

    colone-1 colone-2
    data01 data08
    data02 data05
    data03 data03
    data04 data03
    data05 data05
    data06 data05
    data07 data03
    data08 data08
    data09 data03
    data10 data05
    data11 data08

    les dataxx se suivent, mais pas forcement et toutes les dataxx de la colone-1 sont uniques alors que les dataxx de la colone-2 regroupent un nombre determiné de dataxx de la colone-1. Sur l'exemple on voit toutes les dataxx de la colone-2 sont forcément au moins une fois avec les dataxx de la colone-1 qui leur sont egales.

    Exemple de regroupement :

    data01 data08
    data08 data08
    data11 data08

    data02 data05
    data05 data05
    data06 data05
    data10 data05

    data03 data03
    data04 data03
    data07 data03
    data09 data03

    La requête permet de regrouper le nombre de data_a_traiter en fonction du regroupement de la colone-2

    exemple de ce qu'elle produit :
    3 data08
    4 data03
    4 data05

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT (table_1.colone-1) AS data_a_traiter, table_2.colone-2
    FROM table_1, table_2
    WHERE table_1.colone-date <= CURRENT_DATE AND table_1.colone-2 = table_2.colone-2
    GROUP BY table_2.colone-2
    ORDER BY data_a_traiter DESC;

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 130
    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 130
    Points : 38 543
    Points
    38 543
    Billets dans le blog
    9
    Par défaut
    S'il s'agit de DB2 for Z/OS, alors le résultat du count() est d'un type BIGINT not null.

    cf. https://www.ibm.com/support/knowledg...bif_count.html

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Donc je pourrais utiliser SUM (data_a_traiter) mais comment l'afficher ? Je ne vois pas où insérer le select qui me donnerait cette somme dans mon code...

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 130
    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 130
    Points : 38 543
    Points
    38 543
    Billets dans le blog
    9
    Par défaut
    Comme dans votre requête de votre réponse n°7 : à partir du moment où vous avez défini votre regroupement, vous pouvez utiliser tous les agrégats souhaités.

    Exemple

    Avec ce jeu d'essais
    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
    20
    21
    22
    23
    24
    25
    26
    with tab1(C1, c2, c3, c4) as
        (select 1, 5, 12, 7   from sysibm.sysdummy1
         union all
         select 1, 6, 09, 4   from sysibm.sysdummy1
         union all
         select 1, 1, 15, 5   from sysibm.sysdummy1
         union all
         select 2, 0, 10, 1   from sysibm.sysdummy1
         union all
         select 2, 1, 08, 1   from sysibm.sysdummy1
         union all
         select 3, 4, 01, 1   from sysibm.sysdummy1
         union all
         select 4, 0, 00, 6   from sysibm.sysdummy1
         union all
         select 4, 5, 00, 7   from sysibm.sysdummy1
         union all
         select 4, 2, 00, 5   from sysibm.sysdummy1
        )
       , tab2 (c1, cx) as
        (select 1, 20  from sysibm.sysdummy1 
         union all
         select 3, 27  from sysibm.sysdummy1
         union all
         select 4, 12  from sysibm.sysdummy1
        )
    Et cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select T1.C1       as T1C1
         , max(T1.C2)  as MAXC2
         , min(T1.C2)  as MINC2
         , avg(T1.C3)  as AVGC3
         , min(T2.CX)  as T2CX
    from Tab1 T1
    left join Tab2 T2
      on T2.C1 = T1.C1
    group by T1.C1
    ;
    On obtient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    T1C1 	MAXC2 	MINC2 	AVGC3 	T2CX
    1 	6 	1 	12 	20
    2 	1 	0 	9 	null
    3 	4 	4 	1 	27
    4 	5 	0 	0 	12
    Notez le remplacement de la jointure à l'ancienne (dans le WHERE) par la jointure norme SQL 1995 (JOIN ON) : c'est quand même plus clair de séparer le filtrage de la jointure
    Notez également l'utilisation d'alias de tables, plus pratiques à manipuler que des noms in extenso

  11. #11
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Merci, je regarde cela

  12. #12
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Si je fais cette requête (2) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT table_1.colone-1 FROM table_
     WHERE table_1.colone-date <= CURRENT_DATE
     ORDER BY table_1.colone-1 DESC;
    J'obtiens ça :

    11
    12
    23
    24
    15
    16
    17
    28
    29
    10
    21

    Le nombre de ligne obtenues EST la somme que je cherche à obtenir. C'EST la somme de la colonne data_a_traiter soit 3 + 4 + 4 = 11 de ma requête (1) la première au début.

    Ma question revient a "mixer" les deux requêtes en une seule requête afin de m’éviter de lancer deux requêtes, la première qui me donne le résultat par les regroupements et la deuxième qui me donne le résultat sans les regroupements

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 130
    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 130
    Points : 38 543
    Points
    38 543
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par rndsgn Voir le message
    Si je fais cette requête (2) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT table_1.colone-1 FROM table_
     WHERE table_1.colone-date <= CURRENT_DATE
     ORDER BY table_1.colone-1 DESC;
    Le nombre de ligne obtenues EST la somme que je cherche à obtenir. C'EST la somme de la colonne data_a_traiter soit 3 + 4 + 4 = 11 de ma requête (1) la première au début.
    Bonjour,

    L'expression de besoins est loin d'être claire, vous parlez de résultat obtenu égal à une somme alors que votre requête ne contient ni regroupement ni agrégat ...

    Citation Envoyé par rndsgn Voir le message
    Ma question revient a "mixer" les deux requêtes en une seule requête afin de m’éviter de lancer deux requêtes, la première qui me donne le résultat par les regroupements et la deuxième qui me donne le résultat sans les regroupements
    Ce serait beaucoup plus facile de vous aider si vous communiquiez un extrait réel du jeu de données en entrée (plutôt que data1, data2...), la description réelle des tables (plutôt que table1, colonne1...) et un exemple de résultat attendu en sortie.

  14. #14
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Oui, je re-formule tout cela

Discussions similaires

  1. Quelle base de données de type NoSQL choisir ?
    Par dark0502 dans le forum Décisions SGBD
    Réponses: 0
    Dernier message: 21/05/2014, 21h45
  2. Quelle type de stockage pour les données
    Par scarfunk dans le forum VB.NET
    Réponses: 10
    Dernier message: 27/04/2010, 12h44
  3. Quelles types de données utilisés
    Par Seth77 dans le forum C#
    Réponses: 3
    Dernier message: 26/02/2007, 08h32
  4. [GLScene]objet animé:Quelle type choisir?
    Par pointer dans le forum OpenGL
    Réponses: 1
    Dernier message: 31/03/2006, 12h18
  5. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10

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