Maison > base de données > tutoriel mysql > Comment résoudre l'erreur ORA-00979 « Pas une expression GROUP BY » dans les requêtes SQL ?

Comment résoudre l'erreur ORA-00979 « Pas une expression GROUP BY » dans les requêtes SQL ?

Patricia Arquette
Libérer: 2025-01-24 04:41:08
original
448 Les gens l'ont consulté

How to Resolve the ORA-00979

ORA-00979 : Pas une expression GROUP BY

L'erreur ORA-00979 signifie une incompatibilité entre la liste SELECT et la clause GROUP BY de votre requête SQL. Cela se produit généralement lorsqu'une instruction SELECT inclut des colonnes non présentes dans la clause GROUP BY et que ces colonnes ne sont pas agrégées à l'aide de fonctions telles que SUM, AVG, MIN, MAX, COUNT, etc.

Scénario :

Votre requête implique probablement plusieurs tables (par exemple, review, cs, fact), et la clause GROUP BY n'englobe pas toutes les colonnes non agrégées de la liste SELECT. Par exemple :

<code class="language-sql">SELECT cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number,  cf.some_other_column  -- Problem: cf.some_other_column is missing from GROUP BY
FROM review cr
JOIN cs ON ...
JOIN fact cf ON ...
GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number;</code>
Copier après la connexion

Solution :

Pour résoudre ce problème, soit :

  1. Ajoutez la ou les colonnes manquantes à la clause GROUP BY : Incluez chaque colonne de la liste SELECT qui n'est pas agrégée dans la clause GROUP BY.

  2. Agréger la ou les colonnes manquantes : Utilisez une fonction d'agrégation (par exemple, SUM(cf.some_other_column)) pour résumer les valeurs de la colonne.

Considérations supplémentaires :

  • Jointures sans égalité : Même si toutes les colonnes SELECT sont dans GROUP BY, l'erreur peut survenir avec des jointures sans égalité (par exemple, t1.id > t2.id). Cela crée des lignes en double, violant le principe GROUP BY. Révisez vos conditions de jointure ou utilisez des sous-requêtes pour éliminer les doublons.

  • Comprendre GROUP BY : La clause GROUP BY regroupe les lignes avec des valeurs identiques dans des colonnes spécifiées, permettant aux fonctions d'agrégation d'opérer sur chaque groupe. Sans regroupement approprié, la base de données ne peut pas déterminer une valeur unique pour les colonnes non agrégées.

En vous assurant que chaque colonne de votre liste SELECT se trouve soit dans la clause GROUP BY, soit agrégée, vous pouvez résoudre l'erreur ORA-00979 et obtenir des résultats de requête cohérents.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal