تعليم SQL Count () مع بيان محدد
سؤال
أنا أستخدم هذا الرمز:
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.
لا تنتمي إلى StackOverflow