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 :

Sélectionner seulement un certain nombre d'élément


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    CPGE - PC
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : CPGE - PC

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Points : 11
    Points
    11
    Par défaut Sélectionner seulement un certain nombre d'élément
    Ce programme me permet d'obtenir le nom de la langue accompagnée de son nombre de locuteurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        SELECT language.Name,SUM(CAST(country.Population*Percentage/100 AS SIGNED INTEGER )) AS Nombre_de_locuteurs
        FROM `country`
        JOIN `language` ON language.Country=country.Code
        GROUP BY language.Name
        ORDER BY Nombre_de_locuteurs DESC
    J'aimerai maintenant n'obtenir que les 10 langues les plus parlées, puis seulement les 10 suivantes (donc de la 11ème à la 20ème)
    Comment faire ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Quelque chose comme ça (en SQL normatif)
    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
    16
    17
    18
    19
    20
    WITH    Compte
        AS  (   SELECT  lng.Name
                    ,   SUM(CAST(cnt.Population * cnt.Percentage / 100 AS SIGNED INTEGER )) AS Nombre_de_locuteurs
                FROM    country     as cnt
                    INNER JOIN
                        language    as lng
                        ON  lng.Country = cnt.Code
                GROUP BY lng.Name
            )
        ,   Ordre
        AS  (   SELECT  Name
                    ,   Nombre_de_locuteurs
                    ,   ROW_NUMBER() OVER (ORDER BY Nombre_de_locuteurs DESC)   AS Rang
                FROM    Compte
            )
    SELECT  Name
        ,   Nombre_de_locuteurs
    FROM    Ordre
    WHERE   Rang BETWEEN 1 AND 10
    ORDER BY Nombre_de_locuteurs DESC
    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.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 731
    Points : 1 416
    Points
    1 416
    Par défaut
    Bonjour,

    vu le caractère utilisé pour encapsuler le texte, j'imagine que le SGBD est MySQL.
    Du coup il eu été préférable de poster la demande dans le forum idoine.

    Il me semble que la réponse est dans la documentation offcielle.
    Voir plus particulièrement "LIMIT... OFFSET..."

    https://dev.mysql.com/doc/refman/5.7/en/select.html
    Le savoir est une nourriture qui exige des efforts.

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour,

    Citation Envoyé par Michel.Priori Voir le message
    il eu été préférable de poster la demande dans le forum idoine
    La nature de la demande est très générale (pourcentage de locuteurs), en conséquence s’intéresser à l’esprit plutôt qu’à la lettre est préférable. Virons les « ` », ainsi que « SIGNED » et la requête peut être exécutée, faire l’objet d’un diagnostic puis d’une autopsie quel que soit SGBD utilisé (y-compris MySQL...)
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 731
    Points : 1 416
    Points
    1 416
    Par défaut
    re,

    si on considère que le forum "SQL" est là pour le SQL générique alors la réponse est donnée par la norme ANSI 2008 avec la prise en compte de Fetch (en même temps que les fonctions de fenêtrage)
    https://en.wikipedia.org/wiki/Select...H_FIRST_clause

    Mais avouons que cette demande particulière a tellement de dialectes qu'il vaut mieux s'en référer au moteur ; à défaut pour les perf sinon pour la lisibilité/maintenance du code
    Le savoir est une nourriture qui exige des efforts.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    En effet, MySQL déroge à la norme en utilisant LIMIT plutôt que FETCH (FIRST) n ROWS.
    De plus, les fonctions OLAP ne sont apparues dans MySQL qu'avec la V8

Discussions similaires

  1. [Débutant] Trouver le nombre d'éléments supérieurs à une certaine valeur
    Par IFREMER dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/05/2009, 14h32
  2. Réponses: 0
    Dernier message: 17/02/2009, 16h13
  3. [XI] Sélectionner un certain nombre de lignes
    Par taoufiqENSIAS dans le forum Webi
    Réponses: 12
    Dernier message: 17/09/2008, 11h03
  4. [VBA-E] Récupérer le nombre d'élément sélectionné d'une Listbox ?
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/01/2007, 17h31
  5. [XPATH] Selectionner un certain nombre d'élément
    Par Sinclair dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 03/05/2006, 15h45

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