sql >> Database teknologi >  >> RDS >> Oracle

stratificeret prøve på intervaller

Det betyder, at du har brug for mindst én post for hver gruppe og flere poster på tilfældig basis, så prøv dette:

SELECT GROUP, VALUE FROM
(SELECT T2.GROUP, T2.VALUE, 
ROW_NUMBER() 
OVER (PARTITION BY T2.GROUP ORDER BY NULL) AS RN
FROM TABLE_1 T1
JOIN TABLE_2 T2
ON(T1.RANGE = T2.GROUP))
WHERE RN = 1 OR
CASE WHEN RN > 1 
AND RN = CEIL(DBMS_RANDOM.VALUE(1,RN))
THEN 1 END = 1
FETCH FIRST 10000 ROWS ONLY;

Her, Rownum tages på tilfældig basis for hver gruppe og derefter tager resultatet rownum 1 og andet rownum hvis de opfylder en tilfældig betingelse.

Skål!!



  1. Identitetsstigningen hopper i SQL Server-databasen

  2. Sådan dræber du en kørende SELECT-sætning

  3. MySQL IN() for to værdier/array?

  4. Kan der være dødvande ved brug af optimistisk låsning?