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).
- يساعد في معالجة الصفوف بناءً على ترتيب محدد.