Requête qui ne passe pas.

Résolu/Fermé
SILUE - 20 avril 2021 à 23:20
 SILUE - 21 avril 2021 à 00:04
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

jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
Modifié le 20 avril 2021 à 23:52
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
1
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 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411 > SILUE
21 avril 2021 à 00:00
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 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022
21 avril 2021 à 00:04
Oui c'est exact.
Merci et bonne soirée également à vous!
0
jee pee Messages postés 36391 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 29 novembre 2022 8 845
20 avril 2021 à 23:59
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 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411 > jee pee Messages postés 36391 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 29 novembre 2022
21 avril 2021 à 00:04
ça arrive même aux meilleurs :-)
0
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 36391 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 29 novembre 2022 8 845
Modifié le 20 avril 2021 à 23:34
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
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