Requête qui ne passe pas.

Résolu
SILUE -  
 SILUE -
Bonjour,
J'ai une base de données qui contient les deux tables suivantes :

Table RATINGS avec les colonnes :
userid de type integer,
movieid de type integer,
rating de type double,
time de type bigint

Table MOVIES avec les colonnes :
id de type integer,
title de type text,
genre de type text.

Et je souhaite faire une requête qui doit générer une liste d'identifiants (movieid) de films classés par la moyenne des notes ( avg(rating) ) (avec les meilleures notes (rating) en premier). Dans le cas où deux films ont la même moyenne, le plus petit identifiant ( movieid) de film doit apparaître en premier.

Voici la requête que je fais et ça ne passe pas:

SELECT movieid FROM ratings
group by (movieid) ASC
having avg (rating) DESC

Merci de me venir en aide.


Configuration: Windows / Chrome 90.0.4430.72
A voir également:

3 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

ne serait-ce pas plutôt

SELECT movieid
         , avg (rating) as moyenne 
 FROM ratings
GROUP BY (movieid) 
ORDER BY  avg (rating) DESC, movieid ASC


1
SILUE
 
Merci pour tout.
ceci est la reponse:

select movieid from ratings
group by movieid
order by avg(rating) desc, movieid asc
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > SILUE
 
Oui je sais, .. c'est la réponse que je t'ai donné.
J'y ai juste ajouté la moyenne dans le SELECT pour que tu vois que le classement fonctionne... après.. tu l'utilises ou non peu importe.
Bonne soirée.
0
SILUE > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Oui c'est exact.
Merci et bonne soirée également à vous!
0
jee pee Messages postés 41521 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
je suis mauvais, je n'avais même pas pris en compte le userid qui fait qu'il doit y avoir plusieurs notes par films
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jee pee Messages postés 41521 Date d'inscription   Statut Modérateur Dernière intervention  
 
ça arrive même aux meilleurs :-)
0
SILUE
 
Voici la solution grâce aux différentes réponses.

select movieid from ratings
group by movieid
order by avg(rating) desc, movieid asc
0
jee pee Messages postés 41521 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
Bonjour,

select moveid from ratings
order by rating desc, moveid asc


"classés par la moyenne des notes" n'a aucun sens, une requête qui pourrait avoir du sens serait plutot la liste des films supérieurs à la moyenne

-1
SILUE
 
Merci pour votre réponse.
ci-dessous la requête qui est passée.

select movieid from ratings
group by movieid
order by avg(rating) desc, movieid asc
0