não não.
Hoje a noite tive um sonho e nesse sonho eu vi a solução rsrsrs.
separei essa tabela em duas tabela primeiro e tabela segundo. Uma com os primeiros lugares por seção e outra com os segundos lugares por seção tbm.
depois peguei a tabela dos primeiros e fiz um select para pegar os dois maiores votos por seção e jogar numa terceira tabela, caso existir apenas um maior voto em determinada secao pego um da tabela primeiro e outro da tabela segundo e jogo na terceira tabela.
Caso existir dois ou mais com maior voto naquela secao pego dois e jogo na tabela terceiro
segue um trechinho do codigo
INSERT INTO RAMDOMICO1
SELECT * FROM TB_RESULTADO_GERAL
WHERE NOMESECAO = CURSOR_TEMP.NOMESECAO
AND VOTOS = PRIMEIRO
AND CPF NOT IN (SELECT CPF FROM RAMDOMICO1);
-- INSERE NA TABELA OS SEGUNDOS COLOCADOS
INSERT INTO RAMDOMICO2
SELECT * FROM TB_RESULTADO_GERAL
WHERE NOMESECAO = CURSOR_TEMP.NOMESECAO
AND VOTOS = SEGUNDO
AND CPF NOT IN (SELECT CPF FROM RAMDOMICO2);
FOR CURSOR_RANDOM IN (SELECT DISTINCT(NOMESECAO) FROM RAMDOMICO1)
LOOP
–VERIFICAR O NUMERO DE REGISTROS DE UMA SECAO
SELECT COUNT(*) INTO VAR_LINHA FROM RAMDOMICO1 WHERE NOMESECAO = CURSOR_RANDOM.NOMESECAO;
-- SE RETORNAR APENAS UM REGISTRO INSERE NA TB_FINAL O PRIMEIRO E O SEGUNDO
IF VAR_LINHA = 1 THEN
INSERT INTO TB_FINAL
SELECT *
FROM (SELECT *
FROM RAMDOMICO1
WHERE NOMESECAO = CURSOR_RANDOM.NOMESECAO
ORDER BY dbms_random.value)
WHERE ROWNUM < 2;
INSERT INTO TB_FINAL
SELECT *
FROM (SELECT *
FROM RAMDOMICO2
WHERE NOMESECAO = CURSOR_RANDOM.NOMESECAO
ORDER BY dbms_random.value)
WHERE ROWNUM 1 THEN
INSERT INTO TB_FINAL
SELECT *
FROM (SELECT *
FROM RAMDOMICO1
WHERE NOMESECAO = CURSOR_RANDOM.NOMESECAO
ORDER BY dbms_random.value)
WHERE ROWNUM < 3;
END IF;
END IF;
END LOOP;
Se eu continuar praticando assim dia eu aprendo!!!!!!
rrsrs
Vlw Ishi
obrigado ai