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 :

[Requête SQL] Problème pour echantilloner


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club Avatar de jool
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 37
    Points
    37
    Par défaut [Requête SQL] Problème pour echantilloner
    Bonjour,

    J'ai besoin de vos lumières sur un problème d'échantillonage.

    On me demande de prendre 3 dates prises au hasard, par mois et sur une année.
    Et j'avoue, je sais pas du tout comment m'y prendre parce que je suis pas un crack en SQL...
    Le but est ensuite de retourner toutes les lignes pour ces 36 (3*12) dates.

    Je vous demande pas de me pondre la requête, juste de l'aide sur ce que je devrais utiliser pour faire ce genre de choses.

    Merci d'avance !

  2. #2
    Nouveau membre du Club Avatar de jool
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 37
    Points
    37
    Par défaut
    j'oubliais, je travaille sur une base Teradata.

  3. #3
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    C'est le "au hasard" qui te pose problème ?
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  4. #4
    Nouveau membre du Club Avatar de jool
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 37
    Points
    37
    Par défaut
    tout a fait, sinon, je prendrais moi meme 3 dates par mois et ca me simplifierai grandement la tache

    je cherche donc un truc me permettant de prendre au hasard ces 3 dates par mois.

  5. #5
    Membre habitué Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Points : 192
    Points
    192
    Par défaut
    Pour oracle j'ai trouvé ca :

    These are the 3 ways i've found to do random selections in oracle. If there's a better way... SOMEONE tell me.

    1) NO WHERE CLAUSE, 10%:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from my_table sample(10)
    The other two aren't so pretty...

    2) WHERE CLAUSE, no order clause. When using ado, you can do a recordcount * 10% and just print that many records:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select my_table.*
    from my_table
    [WHERE CLAUSE]
    order by mod(DBMS_RANDOM.Random,50)+50
    3) WHERE CLAUSE, order clause. Then, either through an outer query or when running through a loop, just print the records that have RANDOM less than 10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select mod(DBMS_RANDOM.Random,50)+50 as RANDOM,
    my_table.*
    from my_table
    [WHERE CLAUSE]
    order by page,revision
    Sinon j'ai l'impression qu'il faut écrire un petit script à toi...
    Ingénieur Génie Logiciel et Systèmes d'Information
    Management des Nouvelles Technologies

    Ecole Supérieure d'Ingénieurs de Luminy (ESIL), Marseille

  6. #6
    Nouveau membre du Club Avatar de jool
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 37
    Points
    37
    Par défaut
    merci beaucoup pour ta réponse

    la première solution est très difficile a mettre en place pour moi puisque je ne peux pas faire de "sample" dans une sous requête

    la deuxième solution est envisageable, le problème est que le modulo n'est pas applicable à une date.

    la troisième, j'ai pas tout compris... faut dire que je débutes en SQL et je me retrouve dans un gros machin énorme (quand je dis énorme... ca fait partie des plus grosses DB de France...)
    Du coup, je suis un peu perdu...mais ca va venir

    Merci beaucoup a toi en tout cas, je vais essayer de me débrouiller avec ca déjà, je reviendrais si c'est encore la galère

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    La méthode la plus classqiue consiste à ajouter une table de toutes les dates avec un n° de date dans l'ordre croissant, puis de demander à un générateur de nombre aléatoire de piocher 3 nombre entier entre le n° de debut d'un mois et le n° de fin d'un mois.

    Pour des générateurs de nombre entier en SQL voir dans mon bouquin SQL Développement, il y a plusieurs pages d'exemples.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [AC-2003] Requête SQL : problème pour passer une date
    Par phoon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/11/2009, 07h29
  2. [SQL] Problème pour formuler une requête SQL
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/03/2008, 18h35
  3. [SQL] Problème pour récupérer le resultats d'une requête
    Par -Neo- dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/06/2007, 10h50
  4. [Requêtes SQL] Problème de jointure ?
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 18/12/2006, 15h37
  5. [SQL] problème pour faire ma requete
    Par seb.briet dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/12/2004, 16h51

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