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

Langage SQL Discussion :

Aide sur cette requête


Sujet :

Langage SQL

  1. #1
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 135
    Points : 221
    Points
    221
    Par défaut Aide sur cette requête
    Bonsoir,
    je besoins de vos aides sur cette requête:

    Créez une requête qui affiche le nombre total d’employés et, de ce total, le nombre d’employés embauchés en 1995, 1996, 1997 et 1998. Nommez les colonnes correctement

    EMP(empno,ename,dateembauche,deptno)

    merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    On ne fera pas ton travail à ta place !

    Qu'as-tu commencé à faire comme requête ?
    Quelle difficulté rencontres-tu ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 135
    Points : 221
    Points
    221
    Par défaut
    c'est pas un travail ,juste j'ai pas trouvé une solution à cette requête !!

    j'arrive seulement à afficher le nombre totale d'employés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count(*) from EMP
    je crois que je devais faire des concaténations entre les requêtes ?

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Il faut faire un groupage.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 135
    Points : 221
    Points
    221
    Par défaut
    merci pour votre aide
    maintenant j'ai reussi à afficher le nombre d'employés dont leur date d'embauche est 1998:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select count(*) "1998" from emp
    group by dateembauche
    having(dateembauche like'%1998';
    mais comment je dois faire pour afficher le nombre de tous les employés dans la même requête ??

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Inutilement compliquée ta requête !

    Pour savoir combien ont été employés en 1998, inutile de faire un groupage, il suffit d'une restriction sur la date d'embauche. Et en supposant que la date d'embauche est enregistrée, comme il se doit, dans une colonne de type DATE, il faut extraire l'année de la date. Par exemple, en SQL standard, ça donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) AS nombre
    FROM emp
    WHERE EXTRACT(YEAR FROM dateembauche) = 1998
    Et pour compter le nombre d'employés embauchés par année, il suffit de grouper par année, comme expliqué dans le cours de SQLPro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT EXTRACT(YEAR FROM dateembauche) AS Annee,
    	COUNT(*) AS nombre
    FROM emp
    GROUP BY annee
    ORDER BY annee
    Si tu ne veux que les années 1995 à 1998, il faut ajouter une restriction sur l'année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT EXTRACT(YEAR FROM dateembauche) AS Annee,
    	COUNT(*) AS nombre
    FROM emp
    GROUP BY annee
    WHERE annee BETWEEN 1995 AND 1998
    ORDER BY annee
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 135
    Points : 221
    Points
    221
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Si tu ne veux que les années 1995 à 1998, il faut ajouter une restriction sur l'année :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT EXTRACT(YEAR FROM dateembauche) AS Annee,
    	COUNT(*) AS nombre
    FROM emp
    GROUP BY annee
    WHERE annee BETWEEN 1995 AND 1998
    ORDER BY annee
    Bonsoir, merci pour votre aide
    d'aprés mes connaissances ,toujours la clause "where" avant "group by" or vous avez mis la clause where aprés group by

  8. #8
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 135
    Points : 221
    Points
    221
    Par défaut
    Problème résolu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select count(*),count(case when dateembauche>= date '2000-01-01' and dateembauche< '2001-01-01'
    end) as "2000" from emp;

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 013
    Points
    34 013
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par goldray Voir le message
    d'aprés mes connaissances ,toujours la clause "where" avant "group by" or vous avez mis la clause where aprés group by
    Oups ! exact !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. aide sur cette requête
    Par timo.net dans le forum Linq
    Réponses: 3
    Dernier message: 18/01/2013, 12h32
  2. aide sur cette requête
    Par timo.net dans le forum VB.NET
    Réponses: 0
    Dernier message: 03/12/2012, 14h23
  3. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 11h29
  4. Aide sur une requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2005, 12h42
  5. Aide sur une requête (Group By...??)
    Par Cocolapin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2004, 11h26

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