Quantcast
Channel: APEX-AT-WORK by Tobias Arnhold
Viewing all articles
Browse latest Browse all 177

Analytische Funktionen (Teil 3): Gruppen mit zufälliger Auswahl der Datenbasis

$
0
0
Das folgende Beispiel bezieht sich auf die Datenbasis meines ersten Post zu "Analytischen Funktionen".
Es geht darum, dass für das Jahr 2014 drei Gruppen (mit einem Hash-Wert je Gruppe) gebildet werden müssen.
Gruppe 1:
- 3 zufällig ausgewählte Bundesländer die mit B anfangen
Gruppe 2:
- 3 zufällig ausgewählte Bundesländer die mit S anfangen
Gruppe 3:
- 3 zufällig ausgewählte Bundesländer die NICHT mit B und S anfangen

Hier das dafür notwendige SQL:
SELECT
BUNDESLAND,
EINWOHNER,
GRUPPE,
/* Hash Generierung */
DBMS_CRYPTO.HASH (UTL_RAW.CAST_TO_RAW (GRUPPE||'XYZ'), 1) AS HASH_WERT
FROM (
SELECT
JAHR,
BUNDESLAND,
EINWOHNER,
/* Gruppe definieren */
CASE
WHEN BUNDESLAND LIKE 'B%'
THEN 1
WHEN BUNDESLAND LIKE 'S%'
THEN 2
ELSE 3
END AS GRUPPE,
/* Zufällige Sortierung innerhalb der Gruppe */
ROW_NUMBER() OVER (
PARTITION BY
CASE
WHEN BUNDESLAND LIKE 'B%'
THEN 1
WHEN BUNDESLAND LIKE 'S%'
THEN 2
ELSE 3
END
ORDER BY DBMS_RANDOM.VALUE(1,10)
) AS RN
FROM AS_EINWO_BUNDESL_JAHR
WHERE JAHR = 2014
)
WHERE RN <= 3
ORDER BY GRUPPE, BUNDESLAND

/*
Nicht vergessen bei der Verwendung von DBMS_CRYPTO.HASH:
grant execute on sys.dbms_crypto to APEX_SCHEMA;
*/
Ergebnis:

BUNDESLANDEINWOHNERGRUPPEHASH_WERT
Baden-Württemberg106660001C5B1DF1A52DCC34C648FC79804F49A0A
Bayern126430001C5B1DF1A52DCC34C648FC79804F49A0A
Bremen6590001C5B1DF1A52DCC34C648FC79804F49A0A
Sachsen4045000238FAEEE9CD02869F273DE5A44CF75218
Sachsen-Anhalt2238000238FAEEE9CD02869F273DE5A44CF75218
Schleswig-Holstein2819000238FAEEE9CD02869F273DE5A44CF75218
Hamburg176200037DA2D9ED3366BAEA4B1FA0D6269F7F9F
Mecklenburg-Vorpommern159400037DA2D9ED3366BAEA4B1FA0D6269F7F9F
Rheinland-Pfalz399600037DA2D9ED3366BAEA4B1FA0D6269F7F9F

Im Endeffekt wird mit Hilfe der ROW_NUMBER() Funktion und DBMS_RANDOM.VALUE Funktion eine zufällige Verteilung geschaffen.

Viewing all articles
Browse latest Browse all 177

Trending Articles