ELECT * FROM students,(SELECT AVG(age),ClassID FROM students GROUP BY ClassID) AS avg_age WHERE students.ClassID=avg_age.ClassID;
+-------+---------------+-----+--------+---------+-----------+----------+---------+
| StuID | Name ? ? ? ? ?| Age | Gender | ClassID | TeacherID | AVG(age) | ClassID |
+-------+---------------+-----+--------+---------+-----------+----------+---------+
| ? ? 1 | Shi Zhongyu ? | ?22 | M ? ? ?| ? ? ? 2 | ? ? ? ? 3 | ?36.0000 | ? ? ? 2 |
| ? ? 2 | Shi Potian ? ?| ?22 | M ? ? ?| ? ? ? 1 | ? ? ? ? 7 | ?20.5000 | ? ? ? 1 |
| ? ? 3 | Xie Yanke ? ? | ?53 | M ? ? ?| ? ? ? 2 | ? ? ? ?16 | ?36.0000 | ? ? ? 2 |
| ? ? 4 | Ding Dian ? ? | ?32 | M ? ? ?| ? ? ? 4 | ? ? ? ? 4 | ?24.7500 | ? ? ? 4 |
| ? ? 5 | Yu Yutong ? ? | ?26 | M ? ? ?| ? ? ? 3 | ? ? ? ? 1 | ?20.2500 | ? ? ? 3 |
| ? ? 6 | Shi Qing ? ? ?| ?46 | M ? ? ?| ? ? ? 5 | ? ? ?NULL | ?46.0000 | ? ? ? 5 |
| ? ? 7 | Xi Ren ? ? ? ?| ?19 | F ? ? ?| ? ? ? 3 | ? ? ?NULL | ?20.2500 | ? ? ? 3 |
| ? ? 8 | Lin Daiyu ? ? | ?17 | F ? ? ?| ? ? ? 7 | ? ? ?NULL | ?19.6667 | ? ? ? 7 |
| ? ? 9 | Ren Yingying ?| ?20 | F ? ? ?| ? ? ? 6 | ? ? ?NULL | ?20.7500 | ? ? ? 6 |
| ? ?10 | Yue Lingshan ?| ?19 | F ? ? ?| ? ? ? 3 | ? ? ?NULL | ?20.2500 | ? ? ? 3 |
| ? ?11 | Yuan Chengzhi | ?23 | M ? ? ?| ? ? ? 6 | ? ? ?NULL | ?20.7500 | ? ? ? 6 |
| ? ?12 | Wen Qingqing ?| ?19 | F ? ? ?| ? ? ? 1 | ? ? ?NULL | ?20.5000 | ? ? ? 1 |
| ? ?13 | Tian Boguang ?| ?33 | M ? ? ?| ? ? ? 2 | ? ? ?NULL | ?36.0000 | ? ? ? 2 |
| ? ?14 | Lu Wushuang ? | ?17 | F ? ? ?| ? ? ? 3 | ? ? ?NULL | ?20.2500 | ? ? ? 3 |
| ? ?15 | Duan Yu ? ? ? | ?19 | M ? ? ?| ? ? ? 4 | ? ? ?NULL | ?24.7500 | ? ? ? 4 |
| ? ?16 | Xu Zhu ? ? ? ?| ?21 | M ? ? ?| ? ? ? 1 | ? ? ?NULL | ?20.5000 | ? ? ? 1 |
| ? ?17 | Lin Chong ? ? | ?25 | M ? ? ?| ? ? ? 4 | ? ? ?NULL | ?24.7500 | ? ? ? 4 |
| ? ?18 | Hua Rong ? ? ?| ?23 | M ? ? ?| ? ? ? 7 | ? ? ?NULL | ?19.6667 | ? ? ? 7 |
| ? ?19 | Xue Baochai ? | ?18 | F ? ? ?| ? ? ? 6 | ? ? ?NULL | ?20.7500 | ? ? ? 6 |
| ? ?20 | Diao Chan ? ? | ?19 | F ? ? ?| ? ? ? 7 | ? ? ?NULL | ?19.6667 | ? ? ? 7 |
| ? ?21 | Huang Yueying | ?22 | F ? ? ?| ? ? ? 6 | ? ? ?NULL | ?20.7500 | ? ? ? 6 |
| ? ?22 | Xiao Qiao ? ? | ?20 | F ? ? ?| ? ? ? 1 | ? ? ?NULL | ?20.5000 | ? ? ? 1 |
| ? ?23 | Ma Chao ? ? ? | ?23 | M ? ? ?| ? ? ? 4 | ? ? ?NULL | ?24.7500 | ? ? ? 4 |
+-------+---------------+-----+--------+---------+-----------+----------+---------+
23 rows in set (0.00 sec)
?
第三步:这里就直接作判断就可以了。
?
MariaDB [hellodb]> SELECT * FROM students,(SELECT AVG(age) AS avg_age_col,ClassID FROM students GROUP BY ClassID) AS avg_age_tab WHERE students.ClassID=avg_age_tab.ClassID AND Age > avg_age_col ORDER BY students.ClassID;
+-------+---------------+-----+--------+---------+-----------+-------------+---------+
| StuID | Name ? ? ? ? ?| Age | Gender | ClassID | TeacherID | avg_age_col | ClassID |
+-------+---------------+-----+--------+---------+-----------+-------------+---------+
| ? ? 2 | Shi Potian ? ?| ?22 | M ? ? ?| ? ? ? 1 | ? ? ? ? 7 | ? ? 20.5000 | ? ? ? 1 |
| ? ?16 | Xu Zhu ? ? ? ?| ?21 | M ? ? ?| ? ? ? 1 | ? ? ?NULL | ? ? 20.5000 | ? ? ? 1 |
| ? ? 3 | Xie Yanke ? ? | ?53 | M ? ? ?| ? ? ? 2 | ? ? ? ?16 | ? ? 36.0000 | ? ? ? 2 |
| ? ? 5 | Yu Yutong ? ? | ?26 | M ? ? ?| ? ? ? 3 | ? ? ? ? 1 | ? ? 20.2500 | ? ? ? 3 |
| ? ?17 | Lin Chong ? ? | ?25 | M ? ? ?| ? ? ? 4 | ? ? ?NULL | ? ? 24.7500 | ? ? ? 4 |
| ? ? 4 | Ding Dian ? ? | ?32 | M ? ? ?| ? ? ? 4 | ? ? ? ? 4 | ? ? 24.7500 | ? ? ? 4 |
| ? ?11 | Yuan Chengzhi | ?23 | M ? ? ?| ? ? ? 6 | ? ? ?NULL | ? ? 20.7500 | ? ? ? 6 |
| ? ?21 | Huang Yueying | ?22 | F ? ? ?| ? ? ? 6 | ? ? ?NULL | ? ? 20.7500 | ? ? ? 6 |
| ? ?18 | Hua Rong ? ? ?| ?23 | M ? ? ?| ? ? ? 7 | ? ? ?NULL | ? ? 19.6667 | ? ? ? 7 |
+-------+---------------+-----+--------+---------+-----------+-------------+---------+
9 rows in set (0.00 sec)
?
MariaDB [hellodb]>
?
再来一个:要疯了。这个我这样写总觉得有点复杂了。不知道大家有没有简略点的。
如何显示其成员数最少为3个的班级的同学中年龄大于同班同学平均年龄的同学?
?
MariaDB [hellodb]> SELECT SQL_NO_CACHE * FROM (SELECT AVG