سؤال

يحرر بوستجرس 9.3

أنا أعمل على تقرير يحتوي على هذا المخطط التالي: http://sqlfiddle.com/#!15/fd104/2

الاستعلام الحالي يعمل بشكل جيد والذي يبدو كما يلي:

enter image description here

إنها في الأساس صلة داخلية بثلاثة جداول.لم أقم بإجراء هذا الاستعلام ولكن المطور هو الذي تركه وأريد تعديل الاستعلام.كما ترون، TotalApplication يقوم فقط بحساب إجمالي الطلب بناءً على a.agent_id.ويمكنك رؤية totalapplication عمود في النتيجةما أريده هو إزالة ذلك وتغيير totalapplication إلى عمودين جديدين.أريد أن أضيف أ completedsurvey و partitalsurvey عمود.لذلك سوف يصبح هذا الجزء في الأساس

SELECT a.agent_id as agent_id, COUNT(a.id) as CompletedSurvey
FROM forms a WHERE  a.created_at >= '2015-08-01' AND 
a.created_at <= '2015-08-31' AND disposition = 'Completed Survey'
GROUP BY a.agent_id

أضفت للتو AND disposition = 'Completed Survey' لكني بحاجة إلى عمود آخر ل partialsurvey الذي لديه نفس الاستعلام مع completedsurvey كونه الفرق الوحيد هو

AND disposition = 'Partial Survey'

و

COUNT(a.id) as PartialSurvey

لكنني لا أعرف أين أضع هذا الاستعلام أو كيف سيبدو الاستعلام. لذا فإن الناتج النهائي يحتوي على هذه الأعمدة

agent_id, name, completedsurvey, partialsurvey, loginhours, applicationperhour, rph

بمجرد أن يصبح الأمر على ما يرام، يمكنني إصلاحه بنفسي من خلال applicationperhour وrph

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

المحلول

إذا فهمتك بشكل صحيح، فأنت تبحث عن تجميع (مشروط) تمت تصفيته:

SELECT a.agent_id as agent_id, 
       COUNT(a.id) filter (where disposition = 'Completed Survey') as CompletedSurvey, 
       count(a.id) filter (where disposition = 'Partial Survey') as partial_survey
FROM forms a 
WHERE a.created_at >= '2015-08-01' 
  AND a.created_at <= '2015-08-31' 
GROUP BY a.agent_id;

يحرر
بالنسبة للإصدارات الأقدم (<9.4) تحتاج إلى استخدام ملف case إفادة:

SELECT a.agent_id as agent_id, 
       COUNT(case when disposition = 'Completed Survey' then a.id end) as CompletedSurvey, 
       COUNT(case when disposition = 'Partial Survey' then a.id end) as partial_survey
FROM forms a 
WHERE a.created_at >= '2015-08-01' 
  AND a.created_at <= '2015-08-31' 
GROUP BY a.agent_id;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى dba.stackexchange
scroll top