Maison >base de données >tutoriel mysql >Comment résoudre l'erreur « Pas une fonction de groupe à groupe unique » dans SQL ?

Comment résoudre l'erreur « Pas une fonction de groupe à groupe unique » dans SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-04 07:46:40618parcourir

How to Resolve the

Comprendre l'erreur « Pas une fonction de groupe à groupe unique » dans SQL

Lors de la tentative de combinaison de fonctions de groupe avec des expressions de colonne individuelles dans un SELECT déclaration, comme dans la requête fournie :

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

Vous pouvez rencontrer l'erreur "pas une fonction de groupe à groupe unique". Cela se produit car la fonction de groupe SUM(TIME) calcule une valeur unique pour chaque groupe (SSN), ce qui la rend incompatible avec l'expression de colonne individuelle SSN.

Pour résoudre cette erreur, vous disposez de plusieurs options :

  1. Supprimer l'expression de colonne individuelle :

    SELECT MAX(SUM(TIME))
    FROM downloads
    GROUP BY SSN

    Cela ne renverra que le maximum valeur de somme sans le SSN correspondant.

  2. Ajoutez une clause GROUP BY pour toutes les expressions de colonne :

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

    Cela regroupera les résultats par à la fois SSN et TIME, ce qui rend la fonction MAX(SUM(TIME)) valide.

  3. Utilisez une sous-requête agrégée :

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

    Cette sous-requête calcule la valeur de somme maximale et sélectionne uniquement les lignes où la SUM( TIME) pour chaque SSN correspond à ce maximum.

En fonction de votre exigences, l'une de ces solutions vous permettra d'obtenir les résultats souhaités sans rencontrer l'erreur « pas une fonction de groupe à groupe unique ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn