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
jctq
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 08 Fev 2006 1:21 pm
Localização: São Gonçalo
Att,
Julio Quintão

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:
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

jctq
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 08 Fev 2006 1:21 pm
Localização: São Gonçalo
Att,
Julio Quintão

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,
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

Sim, coloca na sua pesquisa um

Selecionar tudo

WHERE ROWNUM<=150
Exemplo:

Selecionar tudo

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:
jctq
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 27
Registrado em: Qua, 08 Fev 2006 1:21 pm
Localização: São Gonçalo
Att,
Julio Quintão

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

Abraços...
:lol:
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

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?
RodrigoValentim
Moderador
Moderador
Mensagens: 367
Registrado em: Ter, 25 Mar 2008 3:41 pm
Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer

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

Thomas postou um exemplo, da uma estudada nele e você consegue a solução fácil!
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

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:

Selecionar tudo

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
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

GET_HASH_VALUE Function

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

Selecionar tudo

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.
esttevan
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Qua, 07 Out 2009 10:11 am
Localização: Nova Hartz - RS

Eu usei o Dbms_Randon.Value no Order By

Selecionar tudo

Select * From (
Select
	*
From	
emp
Order By Dbms_Random.Value) a
Where
Rownum < 3
Estevan.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 15 visitantes