سؤال

حسنا ، هذا واحد (3a;عينة المشكلة مع تقدم الجواب) وقد حصلت لي الخدش رأسي:

بي بي سي(الاسم, المنطقة, منطقة, عدد السكان, إجمالي الناتج المحلي)
3a.العثور على أكبر دولة في كل منطقة:

SELECT region, name, population
  FROM bbc x
 WHERE population >= ALL
    (SELECT population
       FROM bbc y
      WHERE y.region = x.region
        AND population > 0)

أنا أفهم مفهوم 'WHERE y.region = x.region'عندما أفكر في الأمر من حيث db محرك حلقات على الطاولة إدخالات مطابقة كل x.المنطقة الحالية y.المنطقة (في تداخل حدد)...ولكن wtf لا 'AND population > 0'القيام به ؟ ليس الجواب الصحيح دون ذلك, ولكن أنا لا أرى كيف لا...

هل كانت مفيدة؟

المحلول

وهذا الشرط هو هناك فقط لأن هناك دخول في أوروبا الجدول (الفاتيكان) الذي فارغة في عدد السكان العمود.الأعمال التالية أيضا و أعتقد هو أكثر قابلية للفهم:

SELECT region, name, population
  FROM bbc x
 WHERE population >= ALL
    (SELECT population
       FROM bbc y
      WHERE y.region = x.region
        AND population IS NOT NULL)

في الخلية وثائق جميع الاستعلامات الفرعية, هناك تعليق مفيدة (التأكيد لهم):

في العام ، الجداول التي تحتوي على NULL القيم و الجداول الفارغة هي "حافة الحالات". عند كتابة الاستعلام الفرعي كود دائما النظر في ما إذا كنت قد اتخذت هذين الاحتمالات بعين الاعتبار.

نصائح أخرى

أنا المضاربة هنا.

ما إذا كان السكان باطل لجميع سجلات معينة المنطقة ؟

تحرير:ويمكن اعتباره نوع من الأمان تجاهل -ve القيم في السكان (لا حياة حقيقية السيناريو).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top