Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1567 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Compter enregistrements différents dans un GROUP BY

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Compter enregistrements différents dans un GROUP BY

n°2036238
electricbl​ue
Pas très inspiré...
Posté le 16-11-2010 à 11:40:28  profilanswer
 

Bonjour,
 
Je travaille sous Oracle, et j'aurai besoin d'un coup de main sur une requête.
J'ai une table qui recense des employés suivant leur pays, ville, batiment et statut.
Dans un premier temps, j'arrive à récupérer les données suivantes : pays/ville/batiment/statut/nombre d'employés ayant ce statut.
 
Voici ma table :

Code :
  1. Prénom    Pays     Ville   Batiment   Statut
  2. --------------------------------------------
  3. Jean      France   Paris   B1         Ing
  4. Jacques   France   Paris   B1         Tech
  5. Amélie    France   Paris   B1         Ing
  6. Audrey    France   Paris   B2         Ing
  7. John      UK       London  B4         Ing
  8. Kate      UK       London  B5         Ing


Voici ma requête :

Code :
  1. select pays, ville, batiment, statut, count(prénom)
  2. from ma_table
  3. group by pays, ville, batiment, statut;


Voici le résultat :

Code :
  1. France / Paris / B1 / Ing / 2
  2. France / Paris / B1 / Tech / 1
  3. France / Paris / B2 / Ing / 1
  4. UK / London / B4 / Ing / 1
  5. UK / London / B5 / Ing / 1


Ce que je voudrais avoir en plus, c'est le nombre d'enregistrements "différents" pour les couples (pays/ville).
Grosso modo, la requête devrait renvoyer en dernière colonne ce nombre:

Code :
  1. France / Paris / B1 / Ing / 2 / 3
  2. France / Paris / B1 / Tech / 1 / 3
  3. France / Paris / B2 / Ing / 1 / 3
  4. UK / London / B4 / Ing / 1 / 2
  5. UK / London / B5 / Ing / 1 / 2


Comme dans mon group by je mets les colonnes batiment et statut, je ne sais pas si ce que je veux faire est réalisable de cette manière...
Merci pour votre aide :)


Message édité par electricblue le 16-11-2010 à 11:43:23
mood
Publicité
Posté le 16-11-2010 à 11:40:28  profilanswer
 

n°2037383
john clees​e
Posté le 20-11-2010 à 20:38:34  profilanswer
 

Salut,  
 
J'ai pas de base Oracle sous la main pour tester, mais à mon avis, une petite fonction analytique fera l'affaire. A priori, le count :  
 
http://lalystar.developpez.com/fonctionsAnalytiques/
 


---------------
Je poste peu, mais c’est parce que je réfléchis beaucoup avant de poster. Ce qui n'empêche pas que la plupart de mes interventions sont navrantes. Mais j’en suis fier.
n°2037534
john clees​e
Posté le 22-11-2010 à 09:51:50  profilanswer
 

Voilà, je viens de tester, et c'est bien ça :  
 
select pays, ville, batiment, statut, count(prenom),
       count(*) over (partition by pays, ville)
from matable
group by pays, ville, batiment, statut;


---------------
Je poste peu, mais c’est parce que je réfléchis beaucoup avant de poster. Ce qui n'empêche pas que la plupart de mes interventions sont navrantes. Mais j’en suis fier.
n°2040314
electricbl​ue
Pas très inspiré...
Posté le 06-12-2010 à 16:35:15  profilanswer
 

Désolé pour cette réponse tardive, et merci beaucoup pour ta solution!!
Je suis parti sur autre chose depuis, mais je teste ça et je te fais un retour dès que possible :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Compter enregistrements différents dans un GROUP BY

 

Sujets relatifs
[MySQL] choisir la ligne retournée par GROUP BYCompter le nombre de fois ou le meme mot apparait ?
[SQL][Qt] Requet pour compter les colonnes ?Help JS je deviens fou ! Compter div ayant une classe spécifique
UPDATE avec JOIN, WHERE, LIMIT, ORDER BYcomment fonctionne ORDER BY RAND() ?
[SQLSERVER]group byInteger parfois égaux, parfois différents
Macro de recherche dans differents fichiers 
Plus de sujets relatifs à : Compter enregistrements différents dans un GROUP BY


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR