Oracle
 sql >> Database >  >> RDS >> Oracle

SQL non è una funzione di gruppo a gruppo singolo

Bene, il problema, in poche parole, è che SUM(TIME) per un SSN specifico sulla tua query è un valore singolo, quindi si oppone a MAX poiché non ha senso (il massimo di un singolo valore non ha significato).

Non sono sicuro di quale server di database SQL stai utilizzando, ma sospetto che tu voglia una query più simile a questa (Scritto con uno sfondo MSSQL - potrebbe essere necessaria la traduzione nel server SQL che stai utilizzando):

SELECT TOP 1 SSN, SUM(TIME)
FROM downloads
GROUP BY SSN
ORDER BY 2 DESC

Questo ti darà il SSN con il tempo totale più alto e il tempo totale per esso.

Modifica - Se ne hai più con lo stesso tempo e li vuoi tutti, li utilizzeresti:

SELECT
SSN, SUM(TIME)
FROM downloads
GROUP BY SSN
HAVING SUM(TIME)=(SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN))