Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2317 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Compter le nombre de valeurs différentes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Compter le nombre de valeurs différentes

n°2277232
xless
Posté le 09-03-2016 à 09:50:15  profilanswer
 

Bonjour,
 
Je suis novice en SQL et je rencontre un problème avec une requête.
Je souhaite compter le nombre de lignes différentes dans une table mais avec une difficulté supplémentaire :
Pouvoir compter avec une comparaison sur la ligne précédente.
 
Pour la petite explication, voici un extrait du champ où je souhaite faire ce calcul :
 
article
W1010204 -> valeur 1
W1010064
W1010064 -> valeur 2
W1010059 -> valeur 3
W1010064 -> valeur 4
W1010059 -> valeur 5
W1010059
W1010156 -> valeur 6
W1916003 -> valeur 7
W1916003
W1916132 -> valeur 8
W1916132
W1916131 -> valeur 9
W1916131
W1916132 -> valeur 10
 
J'ai bien sur essayé avec un SELECT COUNT(article) FROM maTable qui me renvoie bien 15 entrées et un SELECT COUNT(DISTINCT article) FROM maTable qui me renvoie 7 entrées.
Mais ce que j'aimerai, c'est que la requete me renvoie 10 entrées.
 
J'espère avoir été assez clair.
 
Merci pour votre aide.

mood
Publicité
Posté le 09-03-2016 à 09:50:15  profilanswer
 

n°2277310
popov
Posté le 09-03-2016 à 16:10:07  profilanswer
 

Pour résoudre ton problème, il faudrais l'ensemble de ta table.
 
Sur quoi est fait le tri pour qu'il s'affiche comme dans ta liste?

n°2277329
xless
Posté le 09-03-2016 à 17:26:51  profilanswer
 

Voici la table complète :
 
ID HEURE DATE        QTY ARTICLE COLOR
1 111019 20160304 60 W1010204 GAN
2 111040 20160304 1 W1010064 G11
3 111041 20160304 20 W1010064 G11
4 111051 20160304 18 W1010064 97
5 111052 20160304 4 W1010064 97
6 111053 20160304 2 W1010064 97
7 111060 20160304 4 W1010059 BC2
8 111063 20160304 1 W1010064 GTO
9 111064 20160304 1 W1010064 GAN
10 111065 20160304 2 W1010059 916
11 111066 20160304 1 W1010059 GAN
12 111067 20160304 1 W1010156 BC2
13 111069 20160304 2 W1916003 BC2
14 111071 20160304 5 W1916003 BC2
15 111074 20160304 1 W1916132 0
16 111075 20160304 3 W1916132 J24
17 111076 20160304 5 W1916132 G39
18 111077 20160304 1 W1916132 G39
19 111079 20160304 2 W1916131 NST
20 111080 20160304 2 W1916131 VI5
21 111081 20160304 4 W1916131 20M
22 111082 20160304 1 W1916131 GAN
23 111083 20160304 2 W1916131 NST
24 111084 20160304 2 W1916131 0
25 111085 20160304 21 W1916131 GAN
26 111091 20160304 22 W1916132 BC2
 
Je ne fais aucun tri, l'extraction est simplement un SELECT * FROM maTable
 

n°2277417
rufo
Pas me confondre avec Lycos!
Posté le 10-03-2016 à 14:33:29  profilanswer
 

En MySQL, ça donne un truc comme ça (mais c'est pas propre) :

Code :
  1. SET @pos1 =0;
  2. SET @pos2 =0;
  3. SELECT TmpP2.article AS ValeurArticle
  4. FROM
  5. (SELECT (@pos1 := @pos1 + 1) AS NumLigne, p1.id, p1.article FROM Produits p1 ORDER BY p1.id) AS TmpP1
  6. INNER JOIN
  7. (SELECT (@pos2 := @pos2 + 1) AS NumLigne, p2.id, p2.article FROM Produits p2 ORDER BY p2.id) AS TmpP2
  8. ON (TmpP2.NumLigne = (TmpP1.NumLigne - 1))
  9. WHERE TmpP1.article <> TmpP2.article
  10. UNION ALL
  11. SELECT TmpP3.article AS ValeurArticle
  12. FROM (SELECT 1 AS NLigne, p3.id, p3.article FROM Produits p3 ORDER BY p3.id DESC LIMIT 0, 1) AS TmpP3
  13. INNER JOIN
  14. (SELECT 1 AS NLigne, p4.id, p4.article FROM Produits p4 ORDER BY p4.id DESC LIMIT 1, 1) AS TmpP4
  15. ON (TmpP3.NLigne = TmpP4.NLigne)
  16. WHERE TmpP3.article <> TmpP4.article


 
Edit : j'ai testé sur le jeu de données mis dans ton premier post : ça marche... Pour leur ORDER BY id, faut vérifier si c'est bien cette colonne qui sert de tri pour ordonner tes articles (qui permet donc de calculer les n° de lignes).
Après, y'a peut-être plus simple que ce que j'ai fait :/


Message édité par rufo le 10-03-2016 à 14:35:35

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Compter le nombre de valeurs différentes

 

Sujets relatifs
Nombre de session simultanéesCompter le nombre de lignes d'un fichier .
compter nombre de ligne entre deux motsTransformer une chaine en nombre complexe
sed : remplacer valeurs batch sur 2 gigas de données[SQL] Select un nbre max de données = selectionner une ligne sur n.
TextBox alimentant cellules dans deux feuille différentes[EXCEL] Associé nombre à mot depuis une liste déroulante
Plus de sujets relatifs à : Compter le nombre de valeurs différentes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR