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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    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
    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 Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 185
    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 185
    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
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 968
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 968
    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
    Membre habitué
    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
    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 ?

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Il faudrait aller dans le forum db2 https://www.developpez.net/forums/f1...s-donnees/db2/

  6. #6
    Membre habitué
    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
    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

    >>

  7. #7
    Membre habitué
    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
    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 779
    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 779
    Billets dans le blog
    10
    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
    Membre habitué
    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
    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 779
    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 779
    Billets dans le blog
    10
    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
    Membre habitué
    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
    Par défaut
    Merci, je regarde 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