SQL Groub by date

Résolu
Jonas87 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -  
Jonas87 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   514
 
utiliser une méthode comme le substring sql?
0
Jonas87 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention   29
 
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   Statut Membre Dernière intervention   514
 
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   Statut Membre Dernière intervention   29 > NookZ Messages postés 2138 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   53
 
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   Statut Membre Dernière intervention   29
 
Arf, j'en ai tenté plusieurs sans succès ! Merci quand même !
0
NookZ Messages postés 2138 Date d'inscription   Statut Membre Dernière intervention   514 > Jonas87 Messages postés 125 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   29
 
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   Statut Membre Dernière intervention   514
 
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   Statut Membre Dernière intervention   29
 
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   Statut Membre Dernière intervention   514
 
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   Statut Membre Dernière intervention   29
 
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   Statut Membre Dernière intervention   514
 
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   Statut Membre Dernière intervention   29
 
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   Statut Membre Dernière intervention   29
 
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