Ich versuche eine jpql-Abfrage zu schreiben, um den Benutzer mit den meisten Kommentaren auszuwählen. Wenn zwei Benutzer die gleiche Anzahl von Kommentaren haben, möchte ich beide auswählen.JPQL mit Unterabfrage zur Auswahl der maximalen Anzahl
Ich versuchte dies, so etwas wie dieses:
SELECT
c.user, COUNT(c.id) as commentCount
FROM
Comment c
WHERE
commentCount = (SELECT MAX(SIZE(user.comments)) FROM User user)
GROUP BY
c.user
und diese:
SELECT
c.user
FROM
Comment c
GROUP BY
c.user
HAVING
COUNT(c) = (SELECT MAX(SIZE(user.comments)) FROM User user)
Weder Ansatz funktioniert. Was muss ich hier machen?
Wenn Sie sagen, nicht funktioniert, Sie meinen es ausgewählt nur ein Benutzer, wenn zwei Benutzer dieselbe Anzahl der Kommentare hatte? – Victor
Können Sie versuchen: select * from (SELECT c.user, COUNT (c.id) als commentCount VON Kommentar c) s1, wo s1.commentCount = (select max (s2.coomentCount) von SELECT c.user , COUNT (c.id) als commentCount FROM Kommentar c) s2 – Victor
Ich bekomme immer eine "konnte nicht ausführen Abfrage", weil es irgendwie falsch ist. Also an erster Stelle bekomme ich "Unbekannte Spalte" jobsCount "in Where-Klausel" und in der zweiten Stelle, dass die Gruppe von ist ungültig (wenn ich den HAVING-Teil hinzufügen). Aber mir ist nicht bewusst, wie ich eine funktionierende Version schreibe. Habe schon viele verschiedene Versionen ausprobiert. –