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

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    1. SILUE
       
      Merci pour tout.
      ceci est la reponse:

      select movieid from ratings
      group by movieid
      order by avg(rating) desc, movieid asc
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > 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
      2. SILUE > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Oui c'est exact.
        Merci et bonne soirée également à vous!
        0
    2. jee pee Messages postés 9445 Date d'inscription   Statut Modérateur Dernière intervention   9 984
       
      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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > jee pee Messages postés 9445 Date d'inscription   Statut Modérateur Dernière intervention  
         
        ça arrive même aux meilleurs :-)
        0
  2. 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
  3. jee pee Messages postés 9445 Date d'inscription   Statut Modérateur Dernière intervention   9 984
     
    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
    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