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 :

Compter des éléments


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut Compter des éléments
    Bonjour, voici la requête que je n'arrive pas à faire :

    On suppose que j'ai une table comme ceci:

    TABLE
    ________
    PARIS
    MARSEILLE
    LYON
    PARIS
    STRASBOURG
    LENS
    RENNES
    LYON
    PARIS
    LENS
    PARIS
    Le but de la requête est de retourner la ville qui est le plus de fois présente dans la table, içi il s'agit de PARIS.
    Il faudrait peut-être que la requête compte le nombre de présence d'un champs dans la table...

    Je reste dans le flou pour cette requête.

    Merci pour votre aide

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    Regardes du côté de count et surtout de having.
    Mais que se passe t-il si tu as deux villes qui sont cité le plus grand nombre de fois 10 chacunes. Ce que je propose c'est de sortire les deux villes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT VILLE
    FROM
    	(	SELECT VILLE, count(*) as nbre
    		from TVILLE
    		group by VILLE) a N1
    inner join
    (
    	Select MAX(nbre) max_nbre
    	from (	SELECT VILLE, count(*) as nbre
    			from TVILLE
    			group by VILLE
    		) As NM
    )as T
    on N1.nbre=T.max_nbre
    A+
    Soazig

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Quel est votre SGBD ?

    Le principe général pour votre besoin :
    - Compter le nombre de lignes pour chaque ville ;
    - Classer par ordre décroissant ;
    - Isoler la première ville classée.

    Pour la dernière étape, il existe en MySQL la fonction LIMIT.

    Ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT VILLE, COUNT(*) AS Nombre
    FROM laTable
    GROUP BY VILLE
    ORDER BY COUNT(*) DESC
    LIMIT 1
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut
    Le SGBD est Oracle et malgré votre aide je n'arrive pas à exécuter la requête.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Rebonjour,
    Quelle version d'oracle? Quel est le message d'erreur.
    Peut-être que ta version d'oracle n'aime pas les inner join
    Je reformule la requete que j'ai précédemment écrite sans inner join
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT VILLE
    FROM
    (
    	(	SELECT VILLE, count(*) AS nbre
    		FROM TVILLE
    		GROUP BY VILLE) a N1
    ,
    (
    	SELECT MAX(nbre) max_nbre
    	FROM (	SELECT VILLE, count(*) AS nbre
    			FROM TVILLE
    			GROUP BY VILLE
    		) AS NM
    )AS T
    WHERE N1.nbre=T.max_nbre
    Tu n'as pas écrit la réponse à ma question.

    Si il y a deux ex æquo pour la ville la plus fréquenté. Que veux-tu obtenir une seule ville si oui laquelle , les ex aequo?
    A+
    Soazig

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 483
    Par défaut
    C'est la version 1.1.3 de Oracle.

    L'erreur pour ta requete est :"manque une parenthèse de droite" or je vois pas ou la mettre

    Sinon Cinephil, LIMIT ne marche pas sous Oracle? J'ai essayé NUMROW mais cela ne marche pas, pourtant la méthode me parait pas mal...

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par piero53 Voir le message
    C'est la version 1.1.3 de Oracle.
    Ce serait étonnant !

    Exécutez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from sys.v_$version
    Et merci de lire les réponses qui vous concerne, c'est pour vous aider :
    Citation Envoyé par soazig Voir le message
    Tu n'as pas écrit la réponse à ma question.

    Si il y a deux ex æquo pour la ville la plus fréquenté. Que veux-tu obtenir une seule ville si oui laquelle , les ex aequo?

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

Discussions similaires

  1. [Débutant] Compter des éléments récurents, stocker ces nombres
    Par Invité dans le forum Linq
    Réponses: 1
    Dernier message: 03/05/2013, 15h17
  2. Compter des éléments graphiques
    Par renovatio34 dans le forum C#
    Réponses: 1
    Dernier message: 25/04/2012, 01h13
  3. Compter des éléments selon une condition
    Par oli43 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 26/08/2009, 12h47
  4. Compter des éléments d'une liste
    Par Mantor dans le forum Prolog
    Réponses: 5
    Dernier message: 02/05/2007, 19h40
  5. [MySQL] compter des éléments
    Par ggeorges dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/03/2007, 11h00

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