Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/02/2007, 09h04   #1
Membre confirmé
 
Homme Alain
Inscription : mars 2004
Messages : 249
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 43
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 249
Points : 216
Points : 216
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.
Alain B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 09h18   #2
Membre expérimenté

 
Avatar de NGasparotto
 
Nicolas Gasparotto
Inscription : janvier 2007
Messages : 424
Détails du profil
Informations personnelles :
Nom : Nicolas Gasparotto

Informations forums :
Inscription : janvier 2007
Messages : 424
Points : 500
Points : 500
Quelques choses comme ca ?
Code :
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.
NGasparotto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 10h06   #3
Membre confirmé
 
Homme Alain
Inscription : mars 2004
Messages : 249
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 43
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 249
Points : 216
Points : 216
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.
Alain B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 10h37   #4
Membre expérimenté

 
Avatar de NGasparotto
 
Nicolas Gasparotto
Inscription : janvier 2007
Messages : 424
Détails du profil
Informations personnelles :
Nom : Nicolas Gasparotto

Informations forums :
Inscription : janvier 2007
Messages : 424
Points : 500
Points : 500
Merci de fournir un exemple.

Nicolas.
NGasparotto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 10h59   #5
Membre confirmé
 
Homme Alain
Inscription : mars 2004
Messages : 249
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 43
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 249
Points : 216
Points : 216
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.
Alain B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h05   #6
Membre expérimenté

 
Avatar de NGasparotto
 
Nicolas Gasparotto
Inscription : janvier 2007
Messages : 424
Détails du profil
Informations personnelles :
Nom : Nicolas Gasparotto

Informations forums :
Inscription : janvier 2007
Messages : 424
Points : 500
Points : 500
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.
NGasparotto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h09   #7
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
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 ?
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h13   #8
Membre confirmé
 
Homme Alain
Inscription : mars 2004
Messages : 249
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 43
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 249
Points : 216
Points : 216
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.
Alain B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h19   #9
Membre confirmé
 
Homme Alain
Inscription : mars 2004
Messages : 249
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 43
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 249
Points : 216
Points : 216
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.
Alain B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h25   #10
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Au final, souhaites-tu obtenir une valeur distincte de chacun de tes cas ?
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h29   #11
Membre confirmé
 
Homme Alain
Inscription : mars 2004
Messages : 249
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 43
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 249
Points : 216
Points : 216
Un ensemble de valeurs distinctes, pas seulement une de chaque.
Alain B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h33   #12
Membre expérimenté

 
Avatar de NGasparotto
 
Nicolas Gasparotto
Inscription : janvier 2007
Messages : 424
Détails du profil
Informations personnelles :
Nom : Nicolas Gasparotto

Informations forums :
Inscription : janvier 2007
Messages : 424
Points : 500
Points : 500
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.
NGasparotto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 11h44   #13
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Ce n'est vraiment pas très clair tout cela !

Un petit exemple serait effectivement le bienvenue !
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h33.


 
 
 
 
Partenaires

Hébergement Web