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

SQL Oracle Discussion :

Echantillonnage de table


Sujet :

SQL Oracle

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut Echantillonnage de table
    Bonjour,

    Je cherche à obtenir un échantillon d'un table.
    Par exemple, imaginons un table "machin" contenant au moins 3 colonnes :
    "Couleur", "Forme", "Taille", cette table contenant plusieurs milliers de lignes.

    j'aimerais obtenir une requête qui m'en renvoi seulement une 30aine de lignes contenant toute les couleurs, formes et tailles présentes dans la table.

    Je précise : il ne s'agit pas d'obtenir la lise des couleurs , formes et tailles existantes, mais d'avoir un sous ensemble 'représentatif' de la table.

    PS:
    Je tourne sous Oracle 10g

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select distinct Couleur
    from machin
    where rownum < 30
    Et si tu veux tout sur une même colonne, tu unionnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select distinct Couleur
    from machin
    where rownum < 30
    union
    select distinct Forme
    from machin
    where rownum < 30

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut
    Citation Envoyé par Alain B. Voir le message
    Je précise : il ne s'agit pas d'obtenir la lise des couleurs , formes et tailles existantes, mais d'avoir un sous ensemble 'représentatif' de la table.
    Je voulais dire sous ensemble des lignes, pas des colonnes.

    Au final je souhaite un résultat similaire à
    mais avec un nombre restreint de ligne.

    Imaginons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from machin WHERE rownum < 30
    Ca correspondrait presque à ce que je cherche.
    Mais il faut que dans ces 30 lignes il y ait chacune des couleurs, tailles et formes.

  4. #4
    Membre émérite Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Par défaut
    select ... from ... sample(pourcentage);
    => ramènera un pourcentage (<100) des lignes de la table.

  5. #5
    Scorpi0
    Invité(e)
    Par défaut
    Un petit exemple nous aideraient.

    Mais si j'ai compris, tu veux avoir un ensemble de ligne avec des valeurs sur certain colonnes suffisamment distinctes pour te donner une idée de son contenu.

    Au final, ça serait un truc ressemblant aux stats d'oracle quoi... Je pense pas que ce soit possible avec une simple requête SQL. Peut être en bidouillant un truc ignoble, mais sinon...

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut
    Citation Envoyé par 13thFloor Voir le message
    select ... from ... sample(pourcentage);
    => ramènera un pourcentage (<100) des lignes de la table.
    et le "sample" il est représentatif ? ou il y a un risque (avec beaucoup de malchances) de me retrouver avec uniquement des "machins ronds jaunes de tailles 2" même si la table contenait aussi des "carrés verts de taille 4" ?


    Citation Envoyé par Scorpi0 Voir le message
    Un petit exemple nous aideraient.

    Mais si j'ai compris, tu veux avoir un ensemble de ligne avec des valeurs sur certain colonnes suffisamment distinctes pour te donner une idée de son contenu.

    Au final, ça serait un truc ressemblant aux stats d'oracle quoi... Je pense pas que ce soit possible avec une simple requête SQL. Peut être en bidouillant un truc ignoble, mais sinon...
    Ca y ressemble oui, sauf que je n'ai pas besoin de respecter les proportions. Il me faut juste que chaque valeur des colonnes y soient présentes.

  7. #7
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par Alain B. Voir le message
    ...
    j'aimerais obtenir une requête qui m'en renvoi seulement une 30aine de lignes contenant toute les couleurs, formes et tailles présentes dans la table.

    ...
    Et ce n’est pas un Select distinct que tu cherches ?

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Et ce n’est pas un Select distinct que tu cherches ?
    non, je cherche un echantillon contant toutes les valeurs, pas la liste des valeurs

  9. #9
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par Alain B. Voir le message
    non, je cherche un echantillon contant toutes les valeurs, pas la liste des valeurs
    Peux tu poster un petit jeux d’essaie avec les résultats attendues ?

  10. #10
    Scorpi0
    Invité(e)
    Par défaut
    A la va vite, pour un seul critère (les couleurs) et supposant qu'un Id unique existe :

    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
    select * 
    from machin
    where myId in
    (
      /* On trouve une liste d'identifiant qui correspond chacun à une couleur */
      select distinct first_value(myId ) over(partition by Couleur order by myId)
      from machin a
      where Couleur in
      (
        /* On ne prend que les 5 premieres couleurs */
        select Couleur from
        (
          /* Repertoriation des différentes couleurs */
          select distinct Couleur
          from machin
        )
        where rownum < 5
      )
    )
    Pour plusieurs critères, faire un Union avec d'autres requêtes dans le même genre.

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 286
    Par défaut
    Va me falloir quelques heures pour décortiquer ça et l'appliquer à mon cas.
    Mais ça semble correspondre.

    Merci beaucoup

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

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. Réparation table/entête endommagée
    Par tbesrour dans le forum Paradox
    Réponses: 15
    Dernier message: 27/11/2007, 10h42
  3. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55
  4. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29
  5. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31

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