שאלת SQL

שאלת SQL

שלום לכולם!

יש לי בעיה שאיני מצליח לפתור (ואני גם לא בטוח שלSQL בלבד יש פתרון...):
יש לי טבלת תחרות קליעה למטרה אשר מכילה את העמודות: שם מתחרה ותוצאה (Y-הכי טוב,Z-פחות טוב,X-הכי גרוע).
לכל מתחרה יש 10 זריקות ומי שיש לו את אחוזי הפגיעה הכי טובים (הכי הרבה Y השאר -Z וX לא נחשבים) מנצח.
אני לא מצליח ליצור שאילתה שתייצר לי את אחוזי הפגיעה למתחרה...

ניסיתי לעשות GROUP BY מתחרה וcount לעמודת תוצאה עם התנייה של לספור רק Y אבל אני לא יודע איך להמשיך מכאן..

אשמח מאוד לעזרה...
 

pitoach

New member
תמיד תמיד תמיד!!! במחשבים הכל אפשרי!

השאלה היא רק כיצד ולא האם זה אפשרי

לגבי השאלה שלך היא פשוטה מאוד.
תבחר רק את הרשומות בהם יש דירוג רלוונטי Y. תחליף את הדירוג במילים לדירוג במספרים ז"א במקום Y שם מספר 1.
אחרי שיש לך דירוג במספרים כל מה שאתה צריך לעשות זה חיבור של כל הנקודות שיש לכל אחד כדי לדעת למי יש דירוג הכי טוב

* הערה: אם תצרף DDL+DML נוכל להתאמץ פחות, להבין יותר, ולכן לעזור הרבה יותר כולל ספציפית לבעיה שלך

ולכל הגולשים אנא המעיטו בסיפורי סבתא ועברו לשפת מחשבים. אם מציגים שאלה הקשורה למבנה טבלאי אז תכתבו פחות שיפורים ופשוט צרפו לשאלה את המבנה הטבלאי הרלוונטי בשאילתה (DDL) וחיסכו מאיתנו לבצע זאת עבורכם!
http://ariely.info/Blog/tabid/83/En...e-DDL-and-Data-Manipulation-Language-DML.aspx
 

pitoach

New member
דרכים נוספות

1. שימוש בפונקצייה COUNT לספור כמה נתונים יש לכל מתחרה (כמובן אחרי שמסננים רק לנתונים עם דירוג Y רלוונטי)

2. שימוש בפונקציית החלון RANK כדי לדרג את התוצאות הרלננטים לפי משתמש ואז בחירת המשתמש עם ה RANK הכי גדול

3. שימוש בפונקציית החלון ROW_NUMBER בצורה דומה לקודם עם חלון לפי משתמש ובחירה של המספר הכי גדול

הערה: השיטה הראשונה בהודעה קודמת של החלפת הדירוג במספרים מאפשר גם לחשב דירוג של כמ ה תוצאות למשל Y נותנים ערך של 10 ו X ערך של 5 ואז אפשר לבצע חיפוש מי יש לו תוצאה הכי טובה בסך הכל כולל התייחסות למשקל של Y ושל X
 
למעלה