sql >> Databasteknik >  >> RDS >> Oracle

stratifierat urval på intervall

Det betyder att du behöver minst en post för varje grupp och fler poster på slumpmässig basis, försök sedan detta:

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;

Här, Rownum tas på slumpmässig basis för varje grupp och sedan tar resultatet rownum 1 och andra rownum om de uppfyller slumpmässiga villkor.

Skål!!



  1. Får inte svar från PHP / MySQL NuSOAP

  2. Introduktion till PL/SQL-undantagshantering i Oracle Database

  3. PostgreSQL VALUES Kommando förklaras

  4. Hur återskapar man en raderad tabell med Django Migrations?