سؤال

أواجه مشكلة في محاولة تصنيف كل طلاب من طلابنا، من قبل المجموعة الرئيسية التي هم فيها.

مثال البيانات المزيفة.

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;

ليس واضحا بالنسبة لي ماذا تريد التحديث رغم ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top