IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Requête qui ne passe pas.


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Requête qui ne passe pas.
    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT movieid FROM ratings
    group by (movieid) ASC
    having avg (rating) DESC
    Merci de me venir en aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    "Qui ne passe pas" n'est pas très clair, il serait mieux de donner plu de détails dans les demandes, par exemple le message d'erreur…

    Quoi qu'il en soit le problème ici vient de la dernière ligne. Pour trier les lignes d'une requête, il faut utiliser la clause ORDER BY.
    HAVING permet de filtrer le résultat d'une requête après application des fonctions d'agrégations.
    Par exemple ici elle servirait à ne prendre que les films sur leur moyenne.

    Tatayo.

  3. #3
    Invité
    Invité(e)

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'ai trouvé que la reponse était ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT movieid
    FROM ratings
    GROUP BY (movieid) 
    ORDER BY  avg (rating) DESC, movieid ASC
    Merci à tous.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 731
    Points : 1 416
    Points
    1 416
    Par défaut
    Bonjour,

    Il est contre intuitif de trier une liste sur un élément non présenté.

    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT avg (rating) AS Avg_rating, movieid
    FROM ratings
    GROUP BY movieid
    ORDER BY  avg (rating) DESC, movieid ASC
    Le savoir est une nourriture qui exige des efforts.

Discussions similaires

  1. requête qui ne passe pas
    Par zorbo dans le forum Langage
    Réponses: 11
    Dernier message: 22/09/2015, 16h12
  2. une requète qui ne passe pas
    Par JeanNoel53 dans le forum SQL
    Réponses: 0
    Dernier message: 14/12/2010, 10h47
  3. [ODBC] Requête qui ne passe pas
    Par tom06440 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 22/08/2008, 23h29
  4. [MySQL] Requête qui ne passe pas
    Par kirian dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/02/2007, 11h47
  5. Requête qui ne passe pas
    Par TheBart dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/08/2005, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo