参考答案
结论:按班级分组并统计年龄大于18的人数,使用GROUP BY与WHERE过滤后COUNT。核心要点:1. WHERE在分组前筛选掉age<=18的行;2. GROUP BY class_id分组;3. COUNT聚合求每班人数;4. 若需显示0人的班级,用LEFT JOIN并COALESCE。示例:SELECT c.class_id, COUNT(s.id) FROM class c LEFT JOIN students s ON c.id=s.class_id AND s.age>18 GROUP BY c.id; 原理:SQL执行顺序FROM->WHERE->GROUP BY->SELECT,先选择后分组聚合,区别于HAVING(分组后过滤)。