تبسيط الاستعلامات، الكلمة المفتاحية WITH
جزء من قسم الأساسيات في رحلة SQL على Coddy — الدرس 49 من 72.
يمكن أن تصبح الاستعلامات فوضوية للغاية من خلال إضافة العديد من الاستعلامات الداخلية. على سبيل المثال، إليك استعلام يحتوي على العديد من الاستعلامات الفرعية:
SELECT * FROM table1
WHERE col2 IN (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
)
)لتسهيل الأمر، يمكننا استخدام الكلمة المفتاحية WITH query_name AS (...). فهي تتيح لنا حفظ استعلام باسم معين واستخدامه أينما نريد:
WITH query1 AS (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
), query2 AS (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN (SELECT col1 FROM query2) AND col4 IN (SELECT col5 FROM query1)هنا قمنا بإعادة استخدام query1 في query2 وفي الاستعلام الرئيسي.
التحدي
سهلالجداول والأعمدة المتاحة:
<strong>devices_specs</strong>:<strong>device_id</strong>,<strong>width</strong>,<strong>height</strong>,<strong>num_features</strong>,<strong>opinion</strong><strong>devices_score</strong>:<strong>device_id</strong>,<strong>score</strong>
اكتب استعلامًا يقوم بما يلي:
- أولاً، يحدد "large devices" (الأجهزة التي يكون الـ
widthالخاص بها أكبر من 200) - ثم يحسب متوسط الدرجات لهذه الأجهزة الكبيرة. قم بتسمية هذا العمود بـ
average_score
استخدم عبارة WITH لحل هذه المشكلة.
ورقة مرجعية
استخدم WITH query_name AS (...) لإنشاء استعلامات فرعية مسماة يمكن إعادة استخدامها:
WITH query1 AS (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
), query2 AS (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN query2 AND col4 IN query1يجعل هذا النهج الاستعلامات المعقدة التي تحتوي على استعلامات فرعية متعددة أكثر قابلية للقراءة ويسمح بإعادة استخدام نفس الاستعلام الفرعي عدة مرات.
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2الشروط
أساسيات الشروطالكلمة المفتاحية ANDالكلمة المفتاحية ORالكلمة المفتاحية NOTدمج شروط متعددةالأقواسالقيم المنطقية Booleans3تنسيق محدد للنتائج
قيم Nullترتيب النتائج - الجزء الأولترتيب النتائج - الجزء الثانيمراجعة - شركة للأمن السيبرانيتحديد عدد السجلاتمراجعة - مصنع مركبات6تحديات تمهيدية
مراجعة - الانتخابات البرلمانيةمراجعة - اعتقال الشرطة للمجرمينمراجعة - حاوية مشروبات البارمراجعة - هندسة أعمدة جديدة9جداول متعددة
الربط الأساسي - الجزء الأولالربط الأساسي - الجزء الثانيمراجعة - الربط (Join)الربط الذاتي (Self Join)مراجعة - الربط الذاتي (Self Join)الاتحاد (Union)تبسيط الاستعلامات، الكلمة المفتاحية WITHمراجعة - استعلامات WITHمراجعة - مقاول العقارات12Window Functions الجزء الثاني
دوال RANK و DENSE_RANKمراجعة - RANK و DENSE_RANKدالة NTILEدوال التجميعمعيار ROWS و RANGE