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

Oracle Discussion :

[SQL] Requete d'echantillonage


Sujet :

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 [SQL] Requete d'echantillonage
    Bonjour,

    Imaginons une table contenant, entre autre, 3 colonnes nommées C1,C2,C3
    C1 pouvant valoir de 1 a 10,
    C2 de A à Z et
    C3 de 30 à 40.

    Je cherche une requete me renvoyant n lignes avec une égale répartition des valeurs de C1 (autant de de 1 que de 2 .. que de 10) et pour chaque valeur de C1 une egale repartition des valeurs de C2, et enfin pour chaque valeur (C1,C2) une egale repartition des valeurs de C3.

    Existe t il une syntaxe ou des clauses particulieres permettant de le faire de manière assez générique, c'est à dire independamment du type et du nombre de colonnes que je souhaite echantilloner ?

    PS : je tourne sous 10g2.

    Merci.

  2. #2
    Membre chevronné Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Par défaut
    Quelques choses comme ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select c1, count(*) over (partition by c1 order by null) ct_c1,
           c2, count(*) over (partition by c1,c2 order by null) ct_c1c2,
           c3, count(*) over (partition by c1,c2,c3 order by null) ct_c1c2c3
    from table;
    Mais il faut bien avouer qu'un exemple de données de départ et de sortie souhaitée serait tout de même le bienvenu.

    Nicolas.

  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
    Je me suis mal exprimé, je ne cherche pas à compter les valeurs.
    je souhaite avoir en résultat un sous ensemble 'representatif' de ma table de départ, afin que toutes les valeurs de C1,C2,C3 presentes dans la table soient aussi presentes dans le résultat.

  4. #4
    Membre chevronné Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Par défaut
    Merci de fournir un exemple.

    Nicolas.

  5. #5
    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
    On va essayer de faire simple

    Imaginons une table (emp) contenant une liste d'employés.
    Pour chaque employé il y a au moins
    - le service dans le quel il travail (on va dire qu'il n'y a que 5 services au max)
    - son statut fixe/itinérant
    - son type de contrat Interimaire/cdd/cdi
    - son salaire et bien d'autres choses..

    Mettons que cette table contient 50000 employés.
    Je cherche donc une requete qui me renvoie une liste de 1000 employés, uniformement repartis dans les 5 services, chaque statut uniformement réparti dans chaque service et chaque type de contrat uniformement reparti pour chaque statut dans chaque service.

  6. #6
    Membre chevronné Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Par défaut
    Citation Envoyé par Alain B.
    ...une liste de 1000 employés, uniformement repartis dans les 5 services...
    Je dois avoir l'esprit embrumé ce matin (j'en suis désolé), mais ce n'est toujours pas clair pour moi, je ne comprend pas bien cette phrase.
    C'est le " 1000 employés uniformément répartis"...

    Nicolas.

  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Bonjour,

    Je pense qu'il souhaite un panel de valeurs distinctes complet regroupant tous les cas possibles.
    Tu indiques 1000 employés mais tu pourrais en avoir plus ou moins en fonction de tes données.
    Est-ce que c'est ton souhait ?

  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 NGasparotto
    C'est le " 1000 employés uniformément répartis"...
    Dans l'exemple il y a 5 services différents.
    Par uniformemnt reparti j'entends que dans les 1000 employés selectionnés il y en a environ 200 dans chacun des services (1000/5) et non pas 4 dans le premier , 12 dans le deuxieme, 800 dans le troisieme, aucun dans le quatrieme et 184 dans le dernier.

  9. #9
    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 davy.g
    Bonjour,

    Je pense qu'il souhaite un panel de valeurs distinctes complet regroupant tous les cas possibles.
    Tu indiques 1000 employés mais tu pourrais en avoir plus ou moins en fonction de tes données.
    Est-ce que c'est ton souhait ?
    1000 c'est purement abstrait.

  10. #10
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Au final, souhaites-tu obtenir une valeur distincte de chacun de tes cas ?

  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
    Un ensemble de valeurs distinctes, pas seulement une de chaque.

  12. #12
    Membre chevronné Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Par défaut
    N'est-il vraiment pas possible d'avior un vrai exemple concret.
    Quelques données en entrée, et la sortie exacte souhaitée ?

    Nicolas.

  13. #13
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Ce n'est vraiment pas très clair tout cela !

    Un petit exemple serait effectivement le bienvenue !

Discussions similaires

  1. [SQL] requete INSERT possible?
    Par clad523 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/08/2005, 16h42
  2. [SQL] Requete de Sauvegarde
    Par Diablo_22 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 29/07/2005, 19h12
  3. [SQL] requetes inbriquées un peu plus complexe.
    Par Devil666 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/05/2005, 12h06
  4. [SQL] requetes inbriquées, comment faire celle ci??
    Par Devil666 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/05/2005, 16h44
  5. [MS-SQL]requete sur 3 tables
    Par pascalT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/04/2003, 12h24

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