Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL n'est pas une fonction de groupe à groupe unique

Eh bien, le problème est simplement que le SUM (TIME) pour un SSN spécifique sur votre requête est une valeur unique, donc il s'oppose à MAX car cela n'a aucun sens (le maximum d'une valeur unique n'a pas de sens).

Vous ne savez pas quel serveur de base de données SQL vous utilisez, mais je suppose que vous souhaitez une requête plus semblable à celle-ci (écrite avec un arrière-plan MSSQL - peut nécessiter une traduction vers le serveur SQL que vous utilisez) :

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

Cela vous donnera le SSN avec le temps total le plus élevé et le temps total pour celui-ci.

Modifier - Si vous en avez plusieurs avec un temps égal et que vous les voulez tous, vous les utiliserez :

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