Moyenne sql

Résolu
Bonjour,
Je dois faire une requête pour avoir le titre des films ou leur durée est supérieur à la durée moyenne de tous les film en vidéothèque.
Ma table est composée :
codefilm primary key
titre film
durée
J ‘ ai essayé de créer une vue pour avoir la moyenne... avg(durée)
Puis j aurais voulu faire une jointure avec la table film. Je voudrais savoir si c est la bonne méthode? Si oui comment faire la jointure entre ces deux tables?
Merci pour votre aide je suis débutant...
Bonne soirée

Configuration: iPhone / Safari 14.0.3

2 réponses

  1. Modérateur
    Bonjour,

    Il y a longtemps que je n'ai pas écrit de sql. Mais pas besoin de créer une vue.

    moi je regarderais un truc de style
    select * from films
    ....
    having durée > avg(durée) 

    mais il me semble que having necessite un group by

    peut être même que
    select * from films
    ....
    where durée > avg(durée) 


    ou alors un sous select
    select * from films
    ...
    where durée > (select avg(durée) from films)


    on doit aussi pouvoir faire une jointure avec 2 fois la table films

    0
    1. Contributeur
      bonjour,
      je pense qu'il faut plutôt faire ainsi:
      select * from films as f,
      (select avg(durée) as moy from films) as a
      where f.durée > a.moy
      0
    2. Contributeur
      @yg_be@jee pee: ce qui rejoint l'idée du sous select. il me semble indispensable d'avoir, en effet, une jointure sur deux fois la table.
      0
    3. Contributeur
      @yg_be@Teo35 c'est une très bonne idée de d'abord calculer la moyenne, et d'ensuite faire une jointure entre la moyenne et la table. c'est ce que je propose en une seule requête, qui calcule la moyenne et fait la jointure.
      0
  2. Bonjour
    ah oui, je voulais créer une vue qui n'est pas de tout indispensable
    merci pour vos réponses et pour votre aide.
    bonne soirée
    0
    1. Contributeur
      peux-tu alors marquer la discussion comme résolue?
      0
    2. @yg_beOui bien sûr
      Merci encore pour votre aide
      0