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 :

N° semaine et group by


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut N° semaine et group by
    Bonjour,

    Ce doit probablement être trivial mais je n'arrive pas à effectuer une requête... Je précise que ma DB est en access 2003.

    La voicie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT count(barcode), 
               DatePart("ww",Format(ddate,"00\/00\/00")) AS semaine, 
               siege 
    FROM tb2008 
    GROUP BY semaine, siege;
    J'ai tout alligné pour faciliter la lecture.
    Barcode est un champ contenant les 13 chiffres d'un code à barre.
    Semaine me donne le numéro de la semaine en fonction de la date que je formatte comme il faut (car je l'ai sous forme "DDMMYY").
    Siege est le numéro du magasin.

    Ce que je voudrais obtenir, c'est le nombre de barcode (qui est en fait égal au nombre de bons de réductions utilisés aux caisses) qu'il y a par semaine et par magasin.

    Lorsque j'essaie d'exécuter ça, j'obtiens l'erreur suivante :

    You tried to execute a query that does not include the specified expression 'DatePart("ww",Format(ddate,"00\/00\/00"))' as part of an aggregate function.
    Quelqu'un pourrait-il m'expliquer ce que je fais de travers ?
    Ou peut-être juste m'expliquer ce message d'erreur que j'ai du mal à comprendre.

    Merci d'avance.

    Griftou.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count(barcode), 
               DatePart("ww",Format(ddate,"00\/00\/00")) AS semaine, 
               siege 
    FROM tb2008 
    GROUP BY DatePart("ww",Format(ddate,"00\/00\/00")), siege;

  3. #3
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Voilà, j'avais bien dit que c'était tout con.

    Merci beaucoup !

    Griftou.

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    En passant, y a-t-il un ordre à respecter entre les clauses "group by", "order by" et "having" ?

    J'ai déjà vu que en général on met le group by avant le order by et le having après le group by.

    Mais quand est-il du having et de l'order by ? Et des 3 en même temps ?

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    WHERE
    GROUP BY
    HAVING
    ORDER BY

    Et une petite remarque au passage, le group by effectue un order by au préalable donc il n'est parfois pas nécessaire de faire le order by. De plus si le order by est en contradiction avec l'ordre donné dans le group by, le moteur a un travail supplémentaire à effectuer qui le plus souvent redondant.

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Encore une fois, merci pour cet éclaircissement.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Citation Envoyé par vmolines Voir le message
    Et une petite remarque au passage, le group by effectue un order by au préalable donc il n'est parfois pas nécessaire de faire le order by. De plus si le order by est en contradiction avec l'ordre donné dans le group by, le moteur a un travail supplémentaire à effectuer qui le plus souvent redondant.
    Ceci est spécifique à certains SGBD.
    Si l'on s'en rapporte à la norme ANSI, il n'est pas spécifié que la clause GROUP BY produise un résultat ordonné.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

Discussions similaires

  1. [2012] Sélection de ventes groupée par semaine
    Par eddyphan dans le forum Développement
    Réponses: 17
    Dernier message: 06/11/2014, 09h18
  2. Requête SQL avec Group By par semaine
    Par SOPSOU dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/07/2013, 22h20
  3. Requête DateTime sur une semaine groupée par jour et par heure
    Par cerealkiller dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/08/2011, 15h54
  4. Group by semaine
    Par newmar dans le forum JDBC
    Réponses: 1
    Dernier message: 15/07/2008, 12h34
  5. Perdu dans les Groupes pour mise en forme jours/semaines
    Par StefC30 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/04/2008, 14h13

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