1. ROW_NUMBER()
- ال
ROW_NUMBER()
هي دالة تقوم بترقيم الصفوف في مجموعة بيانات، بحيث يكون لكل صف رقم فريد. - الرقم يبدأ من 1 لكل مجموعة ويتم زيادته لكل صف بناءً على الترتيب المحدد.
2. OVER (ORDER BY LAT_N)
- الجملة
OVER
تحدد كيفية حساب الترتيب. - الـ**
ORDER BY LAT_N
** يعني أن الصفوف سيتم ترتيبها بناءً على العمودLAT_N
.- الصف الذي يحتوي على أقل قيمة في
LAT_N
سيحصل على الرقم 1. - الصف الذي يليه في القيمة سيحصل على الرقم 2، وهكذا.
- الصف الذي يحتوي على أقل قيمة في
3. AS RowNum
- بعد تطبيق الدالة، يتم إعطاء العمود الناتج اسمًا مؤقتًا وهو
RowNum
. - هذا يجعل من السهل الإشارة إلى العمود في الاستعلام أو معالجته في النتائج.
مثال عملي
إذا كان لديك جدول باسم STATION
يحتوي على البيانات التالية:
LAT_N | STATION_NAME |
---|---|
30.5 | Station A |
20.1 | Station B |
25.7 | Station C |
40.8 | Station D |
الكود:
SELECT LAT_N,
STATION_NAME,
ROW_NUMBER() OVER (ORDER BY LAT_N) AS RowNum
FROM STATION;
النتيجة:
LAT_N | STATION_NAME | RowNum |
---|---|---|
20.1 | Station B | 1 |
25.7 | Station C | 2 |
30.5 | Station A | 3 |
40.8 | Station D | 4 |
ملحوظات:
- الـ**
ROW_NUMBER()
يعيد ترقيم الصفوف بناءً على الترتيب المحدد. - إذا لم تحدد
ORDER BY
، فلن يكون هناك ترتيب واضح وستكون النتائج غير متوقعة. - يمكن استخدام
ROW_NUMBER()
لتطبيق عمليات مثل:-
اختيار أول N صفوف:
SELECT * FROM ( SELECT LAT_N, ROW_NUMBER() OVER (ORDER BY LAT_N) AS RowNum FROM STATION ) AS OrderedStations WHERE RowNum <= 3;
-
إيجاد الرقم الذي يمثل الصف الحالي (ترقيم ديناميكي).
-
الخلاصة:
السطر:
ROW_NUMBER() OVER (ORDER BY LAT_N) AS RowNum
- يقوم بترتيب البيانات بناءً على العمود
LAT_N
. - يعطي لكل صف رقمًا تسلسليًا (Row Number).
- يساعد في معالجة الصفوف بناءً على ترتيب محدد.