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_NSTATION_NAME
30.5Station A
20.1Station B
25.7Station C
40.8Station D

الكود:

SELECT LAT_N, 
       STATION_NAME,
       ROW_NUMBER() OVER (ORDER BY LAT_N) AS RowNum
FROM STATION;

النتيجة:

LAT_NSTATION_NAMERowNum
20.1Station B1
25.7Station C2
30.5Station A3
40.8Station D4

ملحوظات:

  1. الـ**ROW_NUMBER() يعيد ترقيم الصفوف بناءً على الترتيب المحدد.
  2. إذا لم تحدد ORDER BY، فلن يكون هناك ترتيب واضح وستكون النتائج غير متوقعة.
  3. يمكن استخدام 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).
  • يساعد في معالجة الصفوف بناءً على ترتيب محدد.