Erreur avec la fonction MAX()
MainCore
-
chico200987 Messages postés 856 Statut Membre -
chico200987 Messages postés 856 Statut Membre -
Bonjour,
Je cherche actuellement à obtenir un salaire maximum dans une table que j'ai créée. Voici le code pour ajouter la table en question:
D'après ce que j'ai pu lire, la fonction pour trouver facilement un maximum est la fonction MAX().
J'ai donc écrit la requête suivante sachant que j'aimerais quelle retourne le numéro du pilote (numPilote) qui a donc le salaire le plus élevé.
Mais j'ai le droit à une belle erreur :
J'ai essayé de reproduire parfaitement l'exemple de ce site
(http://sql.sh/fonctions/agregation/max) malheureusement j'obtiens la même erreur.
Savez vous d'où cela peut venir ?
Merci d'avance ! :-)
Je cherche actuellement à obtenir un salaire maximum dans une table que j'ai créée. Voici le code pour ajouter la table en question:
create table pilote (
numPilote number(5),
nomPilote varchar2(25),
salaire number(8,2),
commission number(4),
dateEmbauche(5));
D'après ce que j'ai pu lire, la fonction pour trouver facilement un maximum est la fonction MAX().
J'ai donc écrit la requête suivante sachant que j'aimerais quelle retourne le numéro du pilote (numPilote) qui a donc le salaire le plus élevé.
select numPilote, max(salaire) from pilote;
Mais j'ai le droit à une belle erreur :
ORA-00937: not a single-group group function
J'ai essayé de reproduire parfaitement l'exemple de ce site
(http://sql.sh/fonctions/agregation/max) malheureusement j'obtiens la même erreur.
Savez vous d'où cela peut venir ?
Merci d'avance ! :-)
A voir également:
- Erreur avec la fonction MAX()
- Fonction si et - Guide
- I14 pro max - Accueil - Guide téléphones
- Max ou netflix - Accueil - Streaming
- Iptv erreur de lecture - Forum TV & Vidéo
- Erreur 0x80070643 - Accueil - Windows
2 réponses
Salut,
Un moyen de résoudre ton problème est de passer par une requête imbriquée de ce type :
SELECT numPilote, salaire FROM pilote
WHERE salaire = (SELECT max(salaire) FROM pilote)
Un moyen de résoudre ton problème est de passer par une requête imbriquée de ce type :
SELECT numPilote, salaire FROM pilote
WHERE salaire = (SELECT max(salaire) FROM pilote)
Cette requête n'a pas de sens pour moi, visiblement elle ne ressemble à aucune des requêtes qui sont sur le lien que tu as donné.
En fait numPilote renvoie une ligne par pilote et max(salaire) renvoie seulement une seule ligne cela n'a pas de sens car ton tableau reésultat contiendrait une colonne avec plein de lignes et une autre avec une seule ligne.
Pour résoudre ton problème je te propose une autre approche. On prends tous les pilotes, on les trie par salaire et on prend le premier.
Cela se fait de cette façon.
En fait numPilote renvoie une ligne par pilote et max(salaire) renvoie seulement une seule ligne cela n'a pas de sens car ton tableau reésultat contiendrait une colonne avec plein de lignes et une autre avec une seule ligne.
Pour résoudre ton problème je te propose une autre approche. On prends tous les pilotes, on les trie par salaire et on prend le premier.
Cela se fait de cette façon.
SELECT numPilote FROM pilote ORDER BY salaire LIMIT 0,1