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 :

Requête Sql qui regroupe par date


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut Requête Sql qui regroupe par date
    Bonjour à tous,

    J'ai un souci pour une requête, En gros j'ai une table université et comme attributs : nom université, Année et Moyenne budgets,

    ce que je veux faire c'est avoir pour chaque année avoir la moyenne du budget des universités.

    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 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Il suffit de faire un groupage. Qu'avez-vous commencé comme requête ?

  3. #3
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Il suffit de faire un groupage. Qu'avez-vous commencé comme requête ?
    Un groupby faut bien le faire sur une somme ou un count ...

    Ce que j'ai fait pas grand chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select start, avg, name
     
    from universite
     
    where 
     
    start >= '2012-12-25 00:00:00'

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Si vous aviez lu l'article dont j'ai donné le lien, vous auriez vu qu'il existe aussi la fonction AVG, ce qui au passage signifie que votre colonne "avg" est mal nommée puisque c'est un mot réservé du langage SQL !

    Votre requête sélectionne la date de début, l'avg (moyenne buget ?) et le nom de chaque université depuis le 25/12/2012.

    avoir pour chaque année avoir la moyenne du budget des universités
    Que voulez-vous, plus concrètement ?
    La moyenne de ces "avg" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT EXTRACT(YEAR FROM start) AS annee,
    	AVG(`avg`) AS moyenne_des_bugets_moyens
    FROM universite
    GROUP BY annee
    J'ai mis la colonne "avg" entre apostrophes inversées, à la manière de MySQL, pour éviter la confusion entre la colonne mal nommée et la fonction SQL.

  5. #5
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par stade13 Voir le message
    Bonjour à tous,
    ce que je veux faire c'est avoir pour chaque année avoir la moyenne du budget des universités.
    petite ambigüité à lever :
    tu veux la colonne "avg" : moyenne de UNE université par année

    name, année, avg
    univ1, 2006, 100 000
    univ1, 2005, 90 000
    univ2, 2006, 130 000

    OU
    moyenne("avg") de toutes les universités par année. (à mon sens c'est plutôt ça, non?)

    année, moyenne(avg)
    2006, 100 000
    2005, 88 000

  6. #6
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par sweetasnz Voir le message
    petite ambigüité à lever :
    tu veux la colonne "avg" : moyenne de UNE université par année

    name, année, avg
    univ1, 2006, 100 000
    univ1, 2005, 90 000
    univ2, 2006, 130 000

    OU
    moyenne("avg") de toutes les universités par année. (à mon sens c'est plutôt ça, non?)

    année, moyenne(avg)
    2006, 100 000
    2005, 88 000
    Plutôt sa

    name, | 2006 | 2005 | 2004
    univ1, 100 000 | 90 000 | 97 000
    univ2, 130 000 | 12 000 | 12 000

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Plutôt sa

    name, | 2006 | 2005 | 2004
    univ1, 100 000 | 90 000 | 97 000
    univ2, 130 000 | 12 000 | 12 000
    Alors ça (et pas sa ! ), c'est de la cosmétique. Ce n'est pas le boulot du SGBD mais celui de l'application qui présente les données.

    Sélectionnez simplement l'université, l'année (avec EXTRACT comme dans ma requête) et le budget, s'il n'y a qu'une ligne par université et par année ou faite un groupage par université et par année s'il y en a plusieurs.

  8. #8
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par stade13 Voir le message
    Plutôt sa

    name, | 2006 | 2005 | 2004
    univ1, 100 000 | 90 000 | 97 000
    univ2, 130 000 | 12 000 | 12 000
    je ne suis pas sur que SQL soit le plus efficace, sachant que tu auras facilement
    name année avg
    univ1 2005 1000
    univ1 2004 2000
    univ2 2005 1500
    univ2 2004 2200

    mais avoir ce que tu veux ... pas si simple.

    donc quel est le contexte de ton extraction de données??
    travailles-tu qu'avec SQL ou bien peux-tu interfacer avec une script (php, python ...) qui te génèreras ton fichier formaté comme tu le veux?
    bref en SQL, je cale désolé, cela doit être possible mais, à mon sens, cela me parait un peu trop lourd.

  9. #9
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Je travaille avec Birt. Bon je vais voir ce que je peux faire côté de Birt, merci pour tout

  10. #10
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    En effet, il faudrait suivre les conseils de Cinéphil et sweetasnz si vous le pouvez.
    Si vous ne le pouvez pas, quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT 
        Universite,
    	AVG(CASE WHEN Annee >= '2004-01-01T00:00:00' AND Annee < '2004-12-31T23:59:59' THEN [Avg] ELSE NULL END) AS 2004,
    	AVG(CASE WHEN Annee >= '2005-01-01T00:00:00' AND Annee < '2005-12-31T23:59:59' THEN [Avg] ELSE NULL END) AS 2005,
    	...
    FROM LaTable
    GROUP BY Universite
    Mais il vous faut savoir à l'avance quelles sont les années que vous voulez prendre en compte, et ce n'est donc pas dynamique... a moins de modifier la requête à chaque fois !

    Cependant, je ne comprend pas trop la logique de la requête. Avez vous plusieurs lignes par année et par université dans cette table ?

  11. #11
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Oui c'est ça, pour chaque université et une date donnée j'ai un budget

Discussions similaires

  1. Requête qui regroupe par catégorie
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 30/11/2007, 17h45
  2. Requête SQL de tri par date
    Par Alain15 dans le forum Requêtes
    Réponses: 8
    Dernier message: 03/08/2006, 08h34
  3. Réponses: 2
    Dernier message: 06/06/2005, 15h13
  4. Réponses: 5
    Dernier message: 29/09/2004, 11h05
  5. Requête SQL qui me bloque
    Par David Guillouet dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/04/2004, 14h52

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