Requête qui ne passe pas. [Résolu]

Signaler
-
 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

3 réponses

Messages postés
32137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2021
3 412
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


.
Cordialement,
Jordane
Merci pour tout.
ceci est la reponse:

select movieid from ratings
group by movieid
order by avg(rating) desc, movieid asc
Messages postés
32137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2021
3 412 > 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.
>
Messages postés
32137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2021

Oui c'est exact.
Merci et bonne soirée également à vous!
Messages postés
31647
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 avril 2021
7 574
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
Messages postés
32137
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2021
3 412 >
Messages postés
31647
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 avril 2021

ça arrive même aux meilleurs :-)
Voici la solution grâce aux différentes réponses.

select movieid from ratings
group by movieid
order by avg(rating) desc, movieid asc
Messages postés
31647
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 avril 2021
7 574
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

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