[SQL] Passender Query?

tomtom

ist Papa²
21 April 2006
16.116
657
Huhu,

mir möchte einfach nicht einfallen, wie ich folgende Problemstellung in einer Abfrage lösen kann:

Ich habe folgenden Tabelle:
Bescheid_Id, Person_Id, ...

Jetzt möchte ich wissen, wie viele Personen 1x, 2x, nx in der Tabelle stehen.

Welche Person wie oft drin steht ist kein Problem:
PHP:
SELECT count("Person_Id") as "Anzahl", Person_Id FROM Bescheid GROUP BY Person_Id

nur wie summiere ich das dann auf?
 
Indem du dein Query als subquery nimmst und nochmal gruppierst....

Sieht dann so aus:
PHP:
SELECT
	daten.Anzahl,
	COUNT(daten.Anzahl) AS xMal
FROM
	(SELECT count(Person_Id) AS Anzahl FROM Bescheid GROUP BY Person_Id) AS daten
GROUP BY
	daten.Anzahl
 
Danke erstmal.

So weit hatte ich es jetzt auch schon:
PHP:
SELECT count("B.anzahl"), B.Anzahl 
FROM
   (SELECT count("PERSON_ID") as "Anzahl", PERSON_ID  From Bescheid GROUP BY SCHUELER_ID)  as  B 
GROUP BY B.Anzahl

Nur sagt mir dann mein DB-Visualizer folgendes: "14:50:03 [SELECT - 0 row(s), 0.000 secs] [Error Code: 933, SQL State: 42000] ORA-00933: SQL-Befehl wurde nicht korrekt beendet"

Das muss an dem "as" in der Selektion liegen, denn selbst ein:
PHP:
SELECT B.PERSON_ID FROM Bescheid  as  B

steigt mit der gleichen Fehlermeldung aus. :-?

Ein
PHP:
SELECT B.PERSON_ID FROM Bescheid  B
funktioniert hingegen.

ich werde es einfach mal außerhalb von DB-Visualizer testen.


Edit:
So, den entsprechenden Query für den DB-Visualzier habe ich herausbekommen:
PHP:
with anz_b_je_p as ( select count("PERSON_ID") ANZ_P, PERSON_ID from bescheid group by PERSON_ID)
select  count("ANZ_B") , anz_b from anz_b_je_p group by anz_b


Jetzt habe ich nur noch das Problem, dass ich einen der beiden Querys in HQL (Hibernate Query Language, Hibernate = JAVA-Framework) übersetzen muss.

Und meine Hibernate-Console meint, dass
PHP:
select count(B.person.personId) as Anzahl from Bescheid as B
nicht geht.

Dabei motzt die Console explizit das "as Anzahl" an. Hat da vielleicht einer eine Idee?
 
Zuletzt bearbeitet:
Versuch mal das AS wegzulassen, ist in SQL eh optional... und ja Hibernate Query Language :ugly: Und wenn alle Stricke reisen kannst dus immer noch in ein View packen (oder die vorstufe) und den Selecten, ist zwar nicht wirklich schön dafür extra ein View zu erstellen, aber naja.
 
In HQL ist das as auch optional. Egal ob es da steht oder nicht, es geht nicht. :ugly:

Naja, wenn ich es nicht hinbekommen sollte, dann nehm ich das, was
PHP:
SELECT count("PERSON_ID"), PERSON_ID  From Bescheid GROUP BY PERSON_ID
bringt und selectiere dann eben im Programm.

Scheiß Frameworks! *fluch*
 
Sicher dass das AS das Problem ist?. Also wenn B.person.personId nicht irgend nen OO ansatz von Hibernate ist, würde ich sagen dass das ein bzw. der Fehler ist.
 
Das liegt ganz sicher an dem as, denn

PHP:
select count(B.person.personId) from Bescheid as B

funktioniert. :(


Das B.person.personId ist, notwendig, da in HQL nicht die Spaltennamen ausschlaggebend sind, sondern die Namensdefinition in der entsprechenden Konfigurtationsdatei. Aber das näher zu erläutern würde jetzt zu weit gehen und ist für mich auch nicht zielführend. ;)