Avoir le total d'un colonne requête SQL

Bonjour,

comment puis je avoir en plus le total de la troisième colonne (nombre_clients) dans la requête suivante :

select ru.name as nom,nl.name as qualification,count(cr.id) as nombre_clients
from
level nl,rm_cae cr,users ru
where
cr.level1=nl.id and cr.user_id=ru.id and ru.role in('lvl','htl') and ru.act='t'
group by nl.name,ru.name order by nom,qualification,nombre_clients DESC;

résultat de la requête :

nom | qualification | nombre_clients
-------------------+-------------------+----------------
nom prenom | qualification | 20
nom prenom | qualification | 3
nom prenom | qualification | 7
nom prenom | qualification | 73

Merci



--
L'accès au savoir est la première liberté que chaque homme devrait avoir.

7 réponses

  1. Merci Jean_Jacques pour cette info. Je testerais plus tard puisque pour le moment j'ai fait autrement avec des requêtes séparées.
    0
    1. Bonjour pcsystemd,

      Une requête UNION semi-acrobatique qui peut être utile :
      (Exemple avec 2 tables : FICHIER_PAL et [Table des statuts]

      SELECT [Table des statuts].Statut, Count([Table des statuts].Statut) AS Nbre
      FROM [Table des statuts] INNER JOIN FICHIER_PAL ON [Table des statuts].RéfStatut = FICHIER_PAL.RéfStatut
      GROUP BY [Table des statuts].Statut, FICHIER_PAL.RéfStatut
      UNION select « Total », Count(FICHIER_PAL.RéfStatut) AS TotalConsolidé
      FROM FICHIER_PAL
      ORDER BY [Table des statuts].Statut;

      Champ de liaison entre les tables : RéfStatut
      Restitution :
      NB : La mise en forme n'a pas résisté au copier/coller

      Statut Nbre
      Annulé 2
      En Cours 5
      Exécuté 26
      Expiré 16
      Total 49

      Cordialement
      La science ne fait que trouver ce qui existe depuis toujours.
      REEVES Hubert.
      0
      1. Merci Reivax962 mais sous postgresql WITH ROLLUP ne fonctionne pas.
        0
        1. Bonjour,

          Ce genre de chose est faisable, mais dépend du SGBD.
          Sous SQL Server, il faut utiliser ROLLUP. Pour les autres, je ne sais pas si cela fonctionne...
          Ta requête deviendrait :

          select ru.name as nom,nl.name as qualification,count(cr.id) as nombre_clients
          from
          level nl,rm_cae cr,users ru
          where
          cr.level1=nl.id and cr.user_id=ru.id and ru.role in('lvl','htl') and ru.act='t'
          group by nl.name,ru.name WITH ROLLUP
          order by nom,qualification,nombre_clients DESC;


          Xavier
          0
          1. c'est un exemple d'affichage mais le tri ce voit bien en réalité avec les vraies données. Je vais pas me compliquer et je vais comme tu le dis faire une seconde requête.

            Merci
            0
            1. Merci pour ton info mais SUM dans ce cas ne donne pas le total de la colonne mais donne le total par qualification des id comme ci dessous :

              nom | qualification | nombre_clients
              -------------------+-------------------+----------------
              nom prenom | qualification | 42569455
              nom prenom | qualification | 5698423
              nom prenom | qualification | 658941
              nom prenom | qualification | 9876544

              ce qui n'est pas ce que j'attends en faites j'attends :

              nom | qualification | nombre_clients
              -------------------+-------------------+----------------
              nom prenom | qualification | 20
              nom prenom | qualification | 3
              nom prenom | qualification | 7
              nom prenom | qualification | 73
              TOTAL |103

              Merci
              L'accès au savoir est la première liberté que chaque homme devrait avoir.
              0