Sto provando a scrivere una query jpql per selezionare l'utente con il maggior numero di commenti. Se due utenti hanno lo stesso numero di commenti, voglio selezionarli entrambi.JPQL con sottoquery per selezionare il conteggio massimo
ho provato questo, qualcosa di simile:
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
e questo:
SELECT
c.user
FROM
Comment c
GROUP BY
c.user
HAVING
COUNT(c) = (SELECT MAX(SIZE(user.comments)) FROM User user)
Né approccio funziona. Cosa devo fare qui?
Quando si dice non ha funzionato, è significa che selezionato un solo utente quando due utenti hanno lo stesso # di commenti? – Victor
Puoi provare: select * from (SELECT c.user, COUNT (c.id) come commentCount DA commento c) s1 dove s1.commentCount = (selezionare max (s2.coomentCount) dal SELEZIONA c.user , COUNT (c.id) come commentoCunto DA Commento c) s2 – Victor
Ricevo sempre un messaggio "Impossibile eseguire query" perché è in qualche modo errato. Quindi in primo luogo ottengo "Colonna sconosciuta" jobsCount "nella clausola where" e nel secondo che il gruppo by non è valido (quando aggiungo la parte HAVING). Ma non sono a conoscenza di come scrivere una versione funzionante. Ho già provato molte versioni differenti. –