הסביבה - oracle 10
קיימת טבלה המכילה מספר לקוח וקוד סגמנט לכל לקוח.
אני צריך ליצור טבלה חדשה כך שכל קבוצת סגמנט תחולק ל2 קבוצות רנדומלית ביחס של 70% ו 30% ולסמן כל לקוח ב 1 או 0 בהתאמה
לדוגמא:
סגמנט A מכיל 1000 לקוחות אז 700 יסומנו ב 1 ו 300 יסומנו ב 0 וכך הלאה
האופון בו ביצעתי את הנדרש:
יצרתי עמודה חדשה הממספרת את הלקוחות בכל קבוצה - השתמשתי בפונקציה האנליטית rank כאשר הגדרתי partition by הסגמט ומיון על פי rowid.
עמודה נוספת שיצרתי היא count לכמות הלקוחות בכל סגמנט - גם כאן ביצעתי בעזרת פונקציה אנליטית count כאשר הגדרתי partition by הסגמט .
לאחר שיש לי את 2 העמודות החדשות חילקתי את עמודת המיספור בעמודת סה"כ לקוחות בסגמנט ובניתי אינדקציה כאשר קטן מ 0.7 אז 1 אחרת 0
מאחר ואני די חדש בתחום השאלה שלי האם יש טכניקה אחרת לביצוע הנושא?
האם יש בעייתיות מסויימת בדרך שתארתי?
האם יש בעיה במיון על פי rowid ? כלומר המטרה שלי היא לחלק את האוכלוסיה בצורה רנדומלית..
תודה
לפי מה שאני מבין יצרתה תלות בין ביןן מספר השורה של הרשומה
לשייכות שלה לסגמנט וזה יכול להיות לא נכון כי הרשומות מופיעות
בסדר מסויים שנקבע ע"פ הכנסתן.
אם יש לך SSIS אזי תוכל להשתמש ברכיב ה sample
שב DATA FLOW
אם לא תוכל להשתמש בפונקציה dbms_random.value
לדוגמה: dbms_random.value(1,100) "תגריל" מספרים מ 1-100
ותוכל למיין את הרשומות המתקבלות לפי אחוזים....