sql >> Databáze >  >> RDS >> Oracle

stratifikovaný vzorek na rozmezí

To znamená, že potřebujete alespoň jeden záznam z každé skupiny a více záznamů na náhodném základě, pak zkuste toto:

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;

Zde Rownum se bere náhodně pro každou skupinu a výsledkem je pak rownum 1 a další rownum pokud splňují náhodnou podmínku.

Na zdraví!!



  1. Lze vytvořit cizí klíč, pokud obě pole nejsou jedinečná?

  2. Vysvětlení MySqlBulkLoader

  3. PostgreSQL:Identifikace vracejících se návštěvníků na základě data – spojení nebo funkce okna?

  4. Jak převést řetězec na datum v MySQL?