عرض MySQL: كيف يمكنني تعيين القيمة الافتراضية للحقل المحسوب إلى 0؟

StackOverflow https://stackoverflow.com/questions/1885070

  •  19-09-2019
  •  | 
  •  

سؤال

يمكنني استخدام العبارة التالية لإنشاء حساب مئوية في عرض:

مستدير(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)، 0) كما PercentageAdvertising

في الأساس، أقسم عدد الردود على سؤال معين (في هذه الحالة، هو شيء يعتبر الإعلان) إجمالي عدد الردود.

في النهاية، لدي أعمدة تظهر النسب المئوية لكل استجابة من خمس ردود استقصائية ممكنة ("هل الإعلان؟"، هل هو ممل؟ "، إلخ).

هذا يعمل تماما ولكن هناك شيء واحد أود أن قرص. عند عدم وجود نوع الاستجابة (على سبيل المثال، الإعلان) أي أصوات، يتلقى حقلي المحسوب قيمة فارغة.

عند تحديد رأيي، كيف يمكنني تحديد قيمة افتراضية من 0؟

شكرًا.

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

المحلول

تحتاج إلى أ coalesce هناك. يختار أول حجة غير فارغة، لذلك تحتاج إلى شيء مثل:

coalesce(
    round(
        ((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
        ,0)
    ,0)
    AS PercentageAdvertising

ثم، عندما تكون نتيجة الجولة فارغة، فإنها ستمنحك صفر بدلا من ذلك.

نصائح أخرى

الاهتمام هو النهج المفضل، لأنه طريقة قياسية ANSI للتعامل مع التقييم عند وجود معلمة فارغة. كونه ANSI، يتم دعم بناء الجملة نفسه على Oracle و SQL Server أو Postgres وما إلى ذلك، مما يجعل الاستعلام أسهل في المنفذ بين قواعد البيانات إذا لزم الأمر.

COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)

إيفلايل هو بناء جملة محددة MySQL:

IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top