So basically, I have a simple Database with only one table (it's a test DB). The table has 4 columns:
What I'm trying to do is pretty simple (that's why i'm asking for your help): I want to get the name and average of the student whith the highest average.
What i tried:
SELECT nom, MAX(avg)
FROM (
SELECT nom, (noteOrale + noteEcrit)/2 as avg
FROM etudiant
GROUP BY nom) AS Table;
After trying this query, it returned me the name and an average but the average doesn't correspond to the name.
Can someone give me pointers or explain what went wrong? Thanks
Use order by
and limit
. No subquery is necessary:
SELECT nom, (noteOrale + noteEcrit)/2 as avg
FROM etudiant
ORDER BY avg DESC
LIMIT 1;
It would appear that no GROUP BY
is needed either, because the values are all on one row.
If they are multiple rows, then you need GROUP BY
.