SQL Groub by date

Résolu/Fermé
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 - 4 mars 2009 à 14:28
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 - 4 mars 2009 à 16:31
Bonjour,
Je veux faire cette requête SQL :
SELECT date, COUNT(nom) as nombre FROM table GROUP BY date
Avoir le nombre de noms par mois.

Seulement la date est au format YYYYMMDD, il faudrait par exemple qu'il me regroupe : 20081025 et 20081030 en 200810

Merci de votre aide !

8 réponses

NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
4 mars 2009 à 14:29
utiliser une méthode comme le substring sql?
0
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 29
4 mars 2009 à 14:43
Merci Nookz, Je ne connaissais pas cette fonction, si je fais cette requette :
SELECT SUBSTR(date,0,2), COUNT(nom) as nombre FROM table GROUP BY SUBSTR(date,0,2)
Il me sort :
date | nombre
(vide) | 12308

12308 doit être le total de toute ma table !
Je cherche a avoir :
date | nombre
200810 | 12
200811 | 2
200812 | 7

Je précise que je fais la requête via ODBC avec du code VBA sous Excel
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
4 mars 2009 à 14:46
déjà pour votre problématique il faudrait mettre SUBSTR(date,0,6)
après je ne sais pas si le SUBSTR est bien pris en compte dans votre cas :s
essayez ceci pour vérifier :
SELECT SUBSTR(date,0,6), COUNT(nom) as nombre FROM table
0
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 29 > NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013
4 mars 2009 à 15:04
Le SUBSTR n'a pas l'air de marcher, si je ne mets pas de group by il me met une 'erreur ODBC 1004'
J'ai essayer un LEFT sans succès :(
0
loicDu28 Messages postés 332 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 2 février 2016 53
4 mars 2009 à 14:45
Bonjour,

ceci est possible je crois grâce au fonction des SGBD.

Regarde ce site, tu trouvera peut être ton bonheur :
https://sqlpro.developpez.com/cours/sqlaz/fonctions/

Bonne chance
0
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 29
4 mars 2009 à 15:23
Arf, j'en ai tenté plusieurs sans succès ! Merci quand même !
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514 > Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010
4 mars 2009 à 15:25
Avez-vous fait d'autres requêtes?

si non exécuter ceci :
SELECT (nom) as nombre FROM table

pour être sûr que votre connexion est fonctionnelle
0
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 29
4 mars 2009 à 15:30
Oui ma première requête:
SELECT date, COUNT(nom) as nombre FROM table GROUP BY date
Cela fonctionne mais avec une table où la date est sous la forme YYYYMM

Mais dans la table où la date est de la forme YYYYMMDD je n'y arrive pas !

Je précise également que je n'ai pas les droits d'écriture dans la base de donnée...
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
4 mars 2009 à 15:34
avez-vous essayé SUBSTRING au lieu de SUBSTR?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 29
4 mars 2009 à 15:53
Substring ne fonctionne pas, mais substr doit fonctionner car il ne me mets pas d'erreur odbc mais m'affiche juste le total de l'année (cf post 2)
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
4 mars 2009 à 15:58
et si vous faites juste : SELECT SUBSTR(date,0,6) FROM table
il vous sort quoi?
0
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 29
4 mars 2009 à 16:02
Il ne me sort rien dans ce cas (même pas une erreur !)
Je n'avais pas précisé mais date est un champ de ma table.
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
4 mars 2009 à 16:04
Vous avez essayé LEFT en faisant LEFT(date;6), c'est bien ça?

Sur un autre topic ils sdisent d'utiliser :
mid(chaine, depart, longueur)
0
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 29
4 mars 2009 à 16:09
J'ai bien testé LEFT et MID, ils ne semblent pas fonctionner, j'ai a chaque fois une erreur ODBC
0
Jonas87 Messages postés 125 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 19 avril 2010 29
4 mars 2009 à 16:31
C'est bon j'ai trouvé ! Je suis un gros nul ! :)
SELECT SUBSTR(date,1,6), COUNT(nom) as nombre FROM table GROUP BY SUBSTR(date,1,6)

Il ne fallait pas mettre SUBSTR(date,0,6) mais SUBSTR(date,1,6) !!
Le 1 c'est l'index (donc la première lettre de l'année : le début de la chaîne à extraire !)

Merci beaucoup pour ton aide
0