0Pricing
SQL Interview Prep · درس

الترتيب حسب التعبيرات والأسماء المستعارة

مواضع قانونية الإشارة إلى الأسماء المستعارة في ORDER BY وكيفية الترتيب حسب منطق محسوب

الترتيب حسب التعبيرات والأسماء المستعارة درس مجاني في SQL Interview Prep على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.

ORDER BY أكثر مرونة مما تتوقع

يعتقد عدد مفاجئ من المرشحين أن ORDER BY لا يمكنه الإشارة إلا إلى أعمدة عادية. لكنه يستطيع في الواقع الفرز حسب التعبيرات، والأسماء المستعارة، ومواضع الأعمدة، ومنطق CASE.

يستخدم المحاورون ذلك لاختبار فهمك لترتيب التنفيذ المنطقي للاستعلام، لأن ORDER BY يُنفَّذ بعد SELECT، وهذا هو السبب تحديدًا في أن الأسماء المستعارة تعمل هنا لكنها لا تعمل في WHERE.

لماذا يُسمح بالأسماء المستعارة في ORDER BY

تذكّر ترتيب التنفيذ المنطقي: FROM، ثم WHERE، ثم GROUP BY، ثم HAVING، ثم SELECT، ثم ORDER BY. ونظرًا إلى تنفيذ SELECT قبل ORDER BY، تكون الأسماء المستعارة للأعمدة التي عرّفتها في SELECT موجودة عند تقييم ORDER BY.

وهذا هو السبب الدقيق في أن الاسم المستعار يعمل في ORDER BY لكنه يفشل في WHERE، وهو سؤال يحب المحاورون ربطه بترتيب التنفيذ.

SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY annual_pay DESC;

الفرز حسب تعبير خام

يمكنك أيضًا تكرار التعبير الكامل في ORDER BY بدلًا من استخدام الاسم المستعار. كلا الأسلوبين صالح، والنتيجة متطابقة.

استخدام الاسم المستعار أوضح ويتجنب تكرار المنطق، لكن بعض الفرق تفضّل التعبير الصريح من أجل الوضوح. وكلتا الإجابتين مقبولة في المقابلة ما دمت قادرًا على تبرير اختيارك.

SELECT name, salary * 12 AS annual_pay
FROM employees
ORDER BY salary * 12 DESC;

الفرز حسب موضع العمود (الترتيب الترتيبي)

يمكنك الفرز حسب الموضع الترتيبي لعنصر في قائمة SELECT: إذ يفرز ORDER BY 2 حسب العمود المحدد ثانيًا. وهذا الأسلوب مختصر لكنه هش، لأن إعادة ترتيب قائمة SELECT تغيّر الفرز بصمت.

نصيحة للمقابلة: اعرف أنه موجود، واعرف أنه لا يُنصح به عمومًا في شيفرة الإنتاج من أجل سهولة القراءة والسلامة.

SELECT name, hire_date
FROM employees
ORDER BY 2 DESC;

الفرز حسب CASE محسوب

من الأنماط القوية الفرز باستخدام تعبير CASE لفرض ترتيب مخصص وغير أبجدي. نُظهر هنا أصحاب الرواتب المرتفعة أولًا باستخدام أولوية مشتقة.

ينتج CASE رتبة للفرز لا يملك عمودًا خاصًا بها؛ ويقيّمها المحرك فقط لغرض الترتيب.

SELECT name, salary
FROM employees
ORDER BY CASE WHEN salary >= 100000 THEN 0 ELSE 1 END,
         salary DESC;

ترتيب فئوي مخصص

نادرًا ما تُفرز أعمدة الحالة بطريقة منطقية أبجديًا. فالقيم "نشط، معلّق، مغلق" تُرتّب أبجديًا إلى "نشط، مغلق، معلّق"، وهذا غير صحيح. يربط CASE كل قيمة برتبة مقصودة.

هذا متطلب شائع في التقارير، وطريقة واضحة لإظهار قدرتك على التحكم في الترتيب بما يتجاوز الفرز الطبيعي.

SELECT id, status
FROM orders
ORDER BY CASE status
           WHEN 'active'  THEN 1
           WHEN 'pending' THEN 2
           WHEN 'closed'  THEN 3
           ELSE 4
         END;

الفرز حسب ناتج دالة

يمكن استخدام أي دالة تُرجع قيمة واحدة في ORDER BY. فعلى سبيل المثال، يمكنك الفرز دون تمييز حالة الأحرف باستخدام LOWER، أو الفرز حسب طول سلسلة نصية، أو حسب جزء من تاريخ.

ملاحظة: قد يمنع تغليف عمود داخل دالة أثناء الفرز المحرك من استخدام فهرس ذلك العمود، كما يحدث في WHERE.

SELECT name
FROM employees
ORDER BY LOWER(name) ASC;

الأسماء المستعارة مقابل التجميعات في استعلامات GROUP BY

غالبًا ما تفرز في الاستعلامات التجميعية حسب قيمة تجميعية. ويمكنك الإشارة إلى الاسم المستعار للتجميع في ORDER BY، للسبب نفسه، وهو تنفيذ SELECT أولًا.

يحصي الاستعلام أدناه الطلبات لكل عميل ويفرزها تنازليًا حسب هذا العدد، باستخدام الاسم المستعار order_count.

SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC;

مشكلة تصادم الاسم المستعار مع اسم العمود

من الحالات الخاصة التي يستمتع المحاورون بطرحها: ماذا لو كان اسمك المستعار يطابق اسم عمود حقيقي؟ تحل معظم المحركات الاسم المجرد في ORDER BY على أنه الاسم المستعار في قائمة SELECT أولًا، وقد يفاجئك ذلك.

إذا استخدمت salary * 2 AS salary اسمًا مستعارًا ثم كتبت ORDER BY salary، فستفرز حسب القيمة المضاعفة، لا حسب العمود الأساسي. تجنب إعادة استخدام أسماء الأعمدة كأسماء مستعارة لتفادي هذا الالتباس.

SELECT salary * 2 AS salary
FROM employees
ORDER BY salary;

دمج التعبيرات واتجاهات الفرز

يمكنك دمج كل هذه العناصر في عبارة واحدة: تعبير، ثم اسم مستعار، ثم عمود عادي، ولكل منها اتجاهه الخاص. يفرز المثال حسب فئة المكافأة المحسوبة تنازليًا، ثم حسب الاسم تصاعديًا كمفتاح فاصل.

يُعد ترتيب المفاتيح بهذه الطريقة أساس العمل في استعلامات التقارير الفعلية.

SELECT name, salary,
       salary * 0.1 AS bonus
FROM employees
ORDER BY bonus DESC, name ASC;

ملاحظات حول قابلية النقل

رغم أن التعبيرات والأسماء المستعارة في ORDER BY مدعومة على نطاق واسع، فإليك بعض الملاحظات للمقابلات:

  • المواضع الترتيبية، مثل ORDER BY 2، قياسية، لكن لا يُنصح بها.
  • تتسم إتاحة الأسماء المستعارة في ORDER BY بالاتساق عبر المحركات الرئيسية، بخلاف WHERE/HAVING.
  • تقيّدك SELECT DISTINCT: لا يمكنك استخدام ORDER BY إلا مع التعبيرات الظاهرة في قائمة SELECT.

تحقق سريع

اربط بين نطاق رؤية الاسم المستعار وترتيب التنفيذ.

خلاصة

الفرز باستخدام التعابير والأسماء المستعارة:

  • يقبل ORDER BY الأسماء المستعارة، والتعابير الأولية، والدوال، ومنطق CASE، والمواقع الترتيبية.
  • تعمل الأسماء المستعارة لأن ORDER BY يُنفّذ بعد SELECT وفق الترتيب المنطقي.
  • استخدم CASE لتنفيذ ترتيب فئوي مخصص.
  • تجنّب أسماء مستعارة تتعارض مع أسماء أعمدة حقيقية لتفادي الالتباس.
  • قد تمنع الدوال الموجودة في مفتاح الفرز استخدام الفهرس.

الأسئلة الشائعة

هل درس «الترتيب حسب التعبيرات والأسماء المستعارة» مجاني؟

نعم — نص درس «الترتيب حسب التعبيرات والأسماء المستعارة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Interview Prep 4 دروس في المجموع.

ماذا ستتعلم في «الترتيب حسب التعبيرات والأسماء المستعارة»؟

مواضع قانونية الإشارة إلى الأسماء المستعارة في ORDER BY وكيفية الترتيب حسب منطق محسوب تتمرن على SQL Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Interview Prep؟

لا تُشترط خبرة سابقة. SQL Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «الترتيب حسب التعبيرات والأسماء المستعارة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Interview Prep هذا؟

نعم. كل درس في SQL Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الترتيب حسب عدة أعمدة ووضع NULL
  2. LIMIT وOFFSET وFETCH FIRST
  3. إرجاع صفوف Top-N بشكل موثوق
  4. الترتيب حسب التعبيرات والأسماء المستعارة
← العودة إلى SQL Interview Prep