Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL ist keine Einzelgruppen-Gruppenfunktion

Nun, das Problem ist einfach ausgedrückt, dass die SUM(TIME) für eine bestimmte SSN in Ihrer Abfrage ein einzelner Wert ist, also widerspricht es MAX, da es keinen Sinn ergibt (das Maximum eines einzelnen Werts ist bedeutungslos).

Ich bin mir nicht sicher, welchen SQL-Datenbankserver Sie verwenden, aber ich vermute, Sie möchten eher eine Abfrage wie diese (Geschrieben mit einem MSSQL-Hintergrund - muss möglicherweise auf den von Ihnen verwendeten SQL-Server übersetzt werden):

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

Dadurch erhalten Sie die SSN mit der höchsten Gesamtzeit und die Gesamtzeit dafür.

Bearbeiten - Wenn Sie mehrere mit der gleichen Zeit haben und sie alle haben möchten, würden Sie Folgendes verwenden:

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