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

Développement SQL Server Discussion :

Sous totaux colonnes différentes [2012]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut Sous totaux colonnes différentes
    Bonjour à tous,
    J'utilise 2 tables pour logger des infos de connexions d'une appli C#.
    La 1ère (T_CONNECTIONS) contient les champs CNX_ID (Id de la connexion), USE_ID (Id de l'utilisateur) et d'autres sans importance pour ce que je veux faire ici.
    La 2ème (TJ_LOG) contient les champs CNX_ID (Id de la connexion) et LOG_OPERATION (Opération réalisée).
    Je voudrais donc faire une requête de synthèse qui me sorte par utilisateur, le nombre total de connexions et le nombre total d'opérations.
    En gros :

    USE_ID Nb de connexions Nb d'opérations
    1 5 10
    2 2 5
    3 10 20


    J'ai réussi à le faire mais sur la base de sous-requêtes en créant des tables intermédiaires, mais je trouve cela très lourd et je ne suis pas sûr que c'est performant.
    Pouvez-vous le dire comment je dois procéder au mieux?

    Merci d'avance

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Essayer ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select 
     t.USE_ID, 
     count(t.CNX_ID) , 
     count(tj.LOG_OPERATION) 
    from  T_CONNECTIONS t
     inner join TJ_LOG tj
     on t.CNX_ID = tj.CNX_ID
    group by t.USE_ID

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    Bonjour,

    Merci mais ca ne fonctionne pas.
    J'obtiens la même valeur pour Nb connections et Nb d'opérations.

    Pour info, voici la requête qui fonctionne
    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
    select C1.USE_ID,count(C1.USE_ID) as 'Nb connections',OPUSER.NbOperations
    from dbo.t_CONNECTIONS as C1
    inner join
    (select OP.USE_ID, sum(OP.TotalOperations) as 'NbOperations'
    from
    (
    select C2.USE_ID, TOT.TotalOperations
    from dbo.T_CONNECTIONS as C2
    inner join
    (select L.CNX_ID, count(L.CNX_ID) as 'TotalOperations'
    from dbo.TJ_LOG as L
    group by L.CNX_ID) as TOT on TOT.CNX_ID = C2.CNX_ID
    ) as OP
    group by OP.USE_ID) as OPUSER
    on OPUSER.USE_ID = C1.USE_ID
    group by C1.USE_ID,OPUSER.NbOperations
    mais comme je disais j'ai l'impression que c'est de la bidouille, ca ne me semble pas carré.
    Me trompe-je?

  4. #4
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    En effet la requête qui "marche" me semble compliquée inutilement ...
    Sinon donner un jeu d'essai sur les 2 tables
    (+ le résultat attendu ... si différent de celui indiqué dans le post initial)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 75
    Par défaut
    Ok, mais peux-tu me dire comment faire pour joindre le jeu de données?

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 101
    Par défaut
    La requête de Vttman est correcte ... au distinct près !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select 
     t.USE_ID, 
     count(distinct  t.CNX_ID) , 
     count(tj.LOG_OPERATIONS) 
    from  T_CONNECTIONS t
     inner join TJ_LOG tj
     on t.CNX_ID = tj.CNX_ID
    group by t.USE_ID

  7. #7
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Citation Envoyé par LapinClair Voir le message
    La requête de Vttman est correcte ... au distinct près !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select 
     t.USE_ID, 
     count(distinct  t.CNX_ID) , 
     count(tj.LOG_OPERATIONS) 
    from  T_CONNECTIONS t
     inner join TJ_LOG tj
     on t.CNX_ID = tj.CNX_ID
    group by t.USE_ID
    Mince j'avais loupé ce message ... oui il manque bien une histoire de distinct LapinClair

  8. #8
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Citation Envoyé par gadsweb Voir le message
    Ok, mais peux-tu me dire comment faire pour joindre le jeu de données?
    basiquement
    T_CONNECTIONS
    CNX_ID , USE_ID
    -----------------
    1,1
    1,5
    2,5
    etc ....

    Au passage, ma requête un peu modifiée (à la réflexion) et à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select 
     t.USE_ID, 
     count(distinct t.CNX_ID) , 
     count(distinct tj.LOG_OPERATION) 
    from  T_CONNECTIONS t
     inner join TJ_LOG tj
     on t.CNX_ID = tj.CNX_ID
    group by t.USE_ID

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

Discussions similaires

  1. Réponses: 26
    Dernier message: 12/09/2016, 18h11
  2. sous totaux d'une colonne par couleurs de case
    Par marcoole dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/07/2016, 15h22
  3. [Débutant] Une colonne de double apparait sous une forme différente
    Par Nasky dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/04/2012, 18h21
  4. copier des lignes sous conditions (dans 2 colonnes différentes)
    Par olive08 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/10/2007, 14h44
  5. Sous totaux par catégorie d'une colonne
    Par Benjamin78 dans le forum Sybase
    Réponses: 2
    Dernier message: 22/03/2006, 09h35

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