sql >> Database >  >> RDS >> Oracle

SQL geen groepsfunctie met één groep

Het probleem is simpel gezegd dat de SUM(TIME) voor een specifiek SSN op uw zoekopdracht een enkele waarde is, dus het maakt bezwaar tegen MAX omdat het geen zin heeft (het maximum van een enkele waarde is zinloos).

Ik weet niet zeker welke SQL-databaseserver je gebruikt, maar ik vermoed dat je een query meer als deze wilt (geschreven met een MSSQL-achtergrond - misschien moet je wat vertalen naar de sql-server die je gebruikt):

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

Dit geeft je het SSN met de hoogste totale tijd en de totale tijd ervoor.

Bewerken - Als je er meerdere hebt met een gelijke tijd en je wilt ze allemaal, gebruik dan:

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


  1. Werken met cPanel MySQL-databases

  2. Waarom kan ik geen aggregatiefunctie uitvoeren op een expressie die een aggregatie bevat, maar wel door er een nieuwe select-instructie omheen te maken?

  3. Hoe een enkele rij te vergrendelen

  4. MySQL selecteer één kolom DISTINCT, met bijbehorende andere kolommen