2017-08-23 2 views
0

Ich versuche, eine Anzahl der Person abhängig von der org_id zu erhalten.Gruppierung nach spezifischer Spalte in postgressql

Sagen wir, ich habe 10 Leute in meinen Leuten, die aus einer anderen Organisation kommen.

Ich möchte keine der Personen in separaten mit jedem Datensatz aufgeführt zählen.

Bitte klicken Sie hier auf SQL Fiddle Link, um zu bekommen, was genau ich versuche zu tun.

Postgres Version 9.4

Unter meinem Tisch Aufzeichnungen:

id person_name  emp_id org_id 
1 John Mackenzie TTT104 1 
2 Raven Raid  TTT105 1 
3 Albert Pinto TTT106 2 
4 Albert Pinto1 TTT119 2 
5 Ram Raman  TTT108 2 
6 Huge Jackman TTT109 2 
7 Peter Pan  TTT107 2 
8 Albert Pinto2 TTT106 2 

Ergebnis erwartet:

id person_name  emp_id count(org_id) 
1 John Mackenzie TTT104 2 
2 Raven Raid  TTT105 2 
3 Albert Pinto TTT106 6 
4 Albert Pinto1 TTT119 6 
5 Ram Raman  TTT108 6 
6 Huge Jackman TTT109 6 
7 Peter Pan  TTT107 6 
8 Albert Pinto2 TTT106 6 

Wie im Bild gezeigt, ich meine Aufzeichnungen möchte meine Geschwindigkeit Vorlage aussehen:

enter image description here

Antwort

0

Während der Ergebnisse zu sammeln, können Sie die Lösung, die Sie suchen, ist die folgende:

SELECT org_id, count(*) 
FROM person 
GROUP BY org_id; 

Im Grunde mit dieser Abfrage Sie die Anzahl der Personen in jeder einzelnen Org_ID arbeiten sammeln.

Ergebnis der Abfrage ist, dann gilt:

rg_id | count 
------------- 
1  | 2 
2  | 6 
+0

Ich versuche, Aufzeichnungen zu erhalten und vor jeder Sendung aufnehmen möchten, eine Anzahl von org_id – SushantParkhe

+0

Können Sie in der Frage das Ergebnis schreiben, das Sie von den von Ihnen deklarierten Daten erwarten? – Nano

+0

Ich habe meine Frage mit genauen Details aktualisiert, wie ich Datensätze aussehen soll. – SushantParkhe

0

Abfrage ausführen, wie unten um das Problem zu lösen:

SELECT p.person_name, 
     p.emp_id, 
     count(p.org_id) OVER w as org 
FROM person p WINDOW w AS (PARTITION BY org_id); 
Verwandte Themen