عرض MySQL: كيف يمكنني تعيين القيمة الافتراضية للحقل المحسوب إلى 0؟
-
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)