سؤال

أنا أستخدم هذا الرمز:

  SELECT MACH_NO, 
         COUNT(MACH_NO) AS TOTAL_REPORTS
    FROM MAINTENANCE_LOG
GROUP BY MACH_NO;

... لاسترداد بعض البيانات التي تعطي:

MACH_NO  TOTAL_REPORTS
----------------------
1        4
5        2
8        1
7        1

كيف يمكنني استرجاع فقط حيث تقارير إجمالي أكبر من ثلاثة؟ حاولت:

WHERE TOTAL_REPORTS > 3 

... لكنها تقول

ORA-00904: "Total_reports": معرف غير صالح

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

المحلول

منذ أن استخدمت أ GROUP BY, ، يجب أن تستخدم HAVING عوضا عن WHERE. تحتاج أيضًا إلى الاستخدام بشكل صريح COUNT(MACH_NO) بدلا من الاسم المستعار الخاص بك TOTAL_REPORTS.

لذلك استخدم HAVING COUNT(MACH_NO) > 3, ، عوضا عن WHERE TOTAL_REPORTS > 3.

SELECT MACH_NO, 
       COUNT(MACH_NO) AS TOTAL_REPORTS 
FROM MAINTENANCE_LOG 
GROUP BY MACH_NO
HAVING COUNT(MACH_NO) > 3;

نصائح أخرى

يستخدم نأخذ بند

SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO HAVING TOTAL_REPORTS > 3;

حدد mach_no ، count (mach_no) كـ total_reports من مجموعة الصيانة _log بواسطة mach_nohaving count(mach_no) > 3

بدلاً من حيث Total_Reports> 3 ، جرب حيث العد (Mach_no)> 3.

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