Quand je lance l'instruction SQL suivante:SQL pas un seul groupe fonction de groupe
SELECT MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
Il renvoie la valeur de la somme maximale de téléchargements par un client, si je tente de trouver le numéro de sécurité sociale qui valeur max appartient en l'ajoutant à l'instruction select:
SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
je reçois l'erreur suivante:
not a single-group group function
Je ne comprends pas pourquoi il lance cette erreur. Une recherche sur Google est venu avec l'action suivante:
chute soit la fonction de groupe ou l'expression individuelle de colonne de la liste SELECT ou ajouter une clause GROUP BY qui comprend toutes les expressions de colonne individuelles figurant
D'après ce que je pense que ce dit - l'abandon de la fonction de groupe rend la valeur de la somme invalide - l'abandon de l'expression de colonne individuelle (SSN) me donnera juste la somme maximale - je ne suis pas sûr de cette troisième partie.
Quelqu'un pourrait-il guider dans la bonne direction?
-Tomek
EDIT: TIME dans cette base de données fait référence au nombre de fois téléchargé
J'utilise oracle et je ne suis pas familier avec l'acquisition de lignes spécifiques.Cependant, que se passe-t-il s'il y a des clients qui sont liés pour avoir le maximum de téléchargements? – Tomek
S'il y avait un multiple avec le même montant, il serait essentiellement aléatoire et vous l'obtiendrez (il y a probablement un ordre à un niveau bas mais je ne le saurais pas et je ne m'en fierais pas). Vous pouvez ajouter des clauses supplémentaires à la commande si vous souhaitez spécifier comment la commander vous-même. Si vous voulez obtenir tous ceux liés pour le premier je crois que vous aurez besoin de requêtes imbriquées, une pour obtenir le temps maximum puis une autre pour retirer tous ceux qui le rencontrent (quelque chose comme "SELECT SSN, SUM (TIME) FROM téléchargements GROUP BY SSN AYANT SUM (TIME) = (SÉLECT MAX (SUM (TIME)) FROM téléchargements GROUP BY SSN)) ") – fyjham
PS: Pas sûr à 100% si HAVING existe dans Oracle - quelqu'un d'autre peut être en mesure de clarifier cela. La plupart de mon expérience est TSQL. – fyjham