±-----±--------±------+
| name | subject | score |
±-----±--------±------+
| 张三 | 数学 | 90 |
| 张三 | 语文 | 50 |
| 张三 | 地理 | 40 |
| 李四 | 语文 | 55 |
| 李四 | 政治 | 45 |
| 王五 | 政治 | 30 |
| 赵六 | 语文 | 100 |
| 赵六 | 数学 | 99 |
| 赵六 | 品德 | 98 |
±-----±--------±------+
整体思路:
第一步查看所有人的平均分;
select name,avg(score) from result group by name;
第二步再计算出每个人挂科情况;
select name,subject,score, score<60 as g from result;
挂科数就是g的综合,即sum(score<60)
第三部综合上面两个语句
select name,avg(score),sum(score<60) as gks from result group by name having gks;
最后筛选挂科数目大于等于2的人:
select name,avg(score),sum(score<60) as gks from result group by name having gks>=2;