بحاجة الى مساعدة في محاولة الترتيب مع مجموعة من قبل
-
19-09-2019 - |
سؤال
أواجه مشكلة في محاولة تصنيف كل طلاب من طلابنا، من قبل المجموعة الرئيسية التي هم فيها.
مثال البيانات المزيفة.
HomeGroup
1. Team RED
2. Team BLUE
3. Team Skeet
4. Team GREEN
Students
1. John, Score - 34, Team RED
2. Jill, Score - 87.3, Team RED
3. Fred, Score - 41, Team GREEN
4. Jane, Score 93, Team BLUE
...
إلخ.
خرج بلدي في ما يلي
Scores
StudentId 1, Score 34, Rank - 5th
StudentId 2, Score 87.3, Rank - 1st
StudentId 3, Score 41, Rank - 9th
StudentId 4, Score 94, Rank - 1st.
أحاول استخدام dense_rank .. وهذا يعمل بشكل جيد إذا قمت بتشغيل هذا ضد مجموعة واحدة من المنزل (على سبيل المثال، الصفحة الرئيسية = 1) ... لكنني لست متأكدا من كيفية القيام بذلك على جميع مجموعات الأعضاء المنزلية.
أنا أظن أنني بحاجة إلى استعلام تحديث، والذي يحتوي على إعطاء استقبال ... وهذه الفرع الاستقبال لها الاستقامة الفرعي الخاصة ...؟
أنا مرتبك جدا :( وأستمر في التفكير في المؤشرات الشريرة التي أرفض استخدامها إلا إذا كان لدي بندقية إلى رأسي (لأنني أعتقد أنه يمكن التعامل معها بشكل صحيح مع تدوين "تعيين").
المحلول
للحصول على dense_rank من كل طالب في الفريق:
SELECT *, DENSE_RANK() OVER (PARTITION BY Team ORDER BY Score DESC)
FROM Students;
ليس واضحا بالنسبة لي ماذا تريد التحديث رغم ذلك.