Query com Pesquisa Randomica é possivel ??

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Seg, 06 Mar 2006 8:57 pm

Gente preciso fazer uma query randômica, que tragam registros existentes na tabela mas de forma aleatoria, tem alguém ai que já fez isso .Se alguém soube e puder me ajudar eu agradeço muito.

Valeu mesmo ...

JCTQ :idea:
jctq
Localização: São Gonçalo

Att,
Julio Quintão

Mensagemem Seg, 06 Mar 2006 11:55 pm

dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Ter, 07 Mar 2006 10:16 am

Valeu Gori !!!

Mas o que eu queria mesmo, é fazer uma query de uma tabela que tenho 1000 registros e selecionar somente 150 aleátoriamente, tenho como fazer isso ??

Muito Obrigado,
jctq
Localização: São Gonçalo

Att,
Julio Quintão

Mensagemem Ter, 07 Mar 2006 10:22 am

Sim, coloca na sua pesquisa um
Código: Selecionar todos
WHERE ROWNUM<=150


Exemplo:
Código: Selecionar todos
SQL> SELECT *
  2  FROM
  3    (SELECT *
  4     FROM EMP
  5     ORDER BY DBMS_UTILITY.GET_HASH_VALUE(TO_CHAR(dbms_utility.get_time)||ename,2,1048576)
  6    )
  7  WHERE ROWNUM <=3
  8  /

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
      7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
      7839 KING       PRESIDENT            17-NOV-81       5000                    10

SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
      7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30

SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7900 JAMES      CLERK           7698 03-DEC-81        950                    30
      7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20

SQL> /

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
      7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
      7566 JONES      MANAGER         7839 02-APR-81       2975                    20
      7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30

SQL>


feito! :shock:
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Ter, 07 Mar 2006 10:39 am

Ai Gori, valeu mesmo cara....
Esse portal é muito bom ....

Abraços...
:lol:
jctq
Localização: São Gonçalo

Att,
Julio Quintão

Mensagemem Qua, 16 Set 2009 9:20 pm

Preciso gerar randomicamente de uma tabela de clientes que tem 1 milhão de registros e quero somente gerar o número de 50.000 clientes..Como posso fazer isso? Tenho dúvidas de como usar o DBMS_UTILITY.GET_HASH_VALUE para fazer essa consulta..Alguém pode me ajudar?
mariogus
Localização: Porto Alegre - RS

Mensagemem Qui, 17 Set 2009 3:36 pm

Thomas postou um exemplo, da uma estudada nele e você consegue a solução fácil!
RodrigoValentim
Localização: Salvador - BA

Rodrigo Valentim
Analista de Sistemas
Oracle Developer

Campanha: Faça uma pesquisa antes de perguntar!!!

Mensagemem Sex, 18 Set 2009 12:12 pm

Pessoal - segue abaixo o SQL:

Mas o que acontece é que ele se perde na cláusula where interna e traz os outros dados...também.. O que pode estar sendo feito de errado?

(dbms_utility.get_time)||dimcli_id,3,429604886) - tenho dúvida sobre esses últimos parâmetros grifados em negrito.

SQL:

Código: Selecionar todos
SELECT *
FROM
(
SELECT *
FROM dim_cliente_suat d
where d.tipo_conta = 'D'
and d.perfil_cobranca_conta = 'PAG'
and d.brand = 'terra'
and d.dt_cadastro_conta < sysdate - 90
and (d.status_conta = 'CA' and d.dt_status_conta between sysdate -240 and sysdate -90)
or (d.status_conta = 'AT')
ORDER BY DBMS_UTILITY.GET_HASH_VALUE(TO_CHAR(dbms_utility.get_time)||dimcli_id,3,429604886)
)
WHERE ROWNUM <=50000
mariogus
Localização: Porto Alegre - RS

Mensagemem Sex, 18 Set 2009 1:56 pm

GET_HASH_VALUE Function

This function computes a hash value for the given string.
Syntax

Código: Selecionar todos
DBMS_UTILITY.GET_HASH_VALUE (
   name      VARCHAR2,
   base      NUMBER,
   hash_size NUMBER)
  RETURN NUMBER;


Parameters
Table 104-20 GET_HASH_VALUE Function Parameters

Parameter Description
name - String to be hashed.
base - Base value for the returned hash value to start at.
hash_size - Desired size of the hash table.
victorhugomuniz
Localização: Rio de Janeiro - RJ

Jesus está voltando, volte antes para Ele.

Imagem JavaBlackBelt

Mensagemem Qua, 07 Out 2009 11:31 am

Eu usei o Dbms_Randon.Value no Order By

Código: Selecionar todos
Select * From (
Select
   *
From   
emp
Order By Dbms_Random.Value) a
Where
Rownum < 3


Estevan.
esttevan
Localização: Nova Hartz - RS


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


Voltar para SQL

Quem está online

Usuários navegando neste fórum: Google [Bot] e 5 visitantes