求平均分最高的5个班级
表中有三个字段,class_id, student_id, score, 如题
- 先建表:
# 随便建一个库
create database test_db;
use test_db;
#建表
CREATE TABLE `score` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`class_id` int(11) NOT NULL,
`student_id` int(11) NOT NULL,
`score` float(3,1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- 随机生成数据
假设10个班,每个班10个学生
#encoding=utf-8
import random
class_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
class Student:
def __init__(self, class_id: int, student_id: int, score: float):
self.class_id = class_id
self.student_id = student_id
self.score = score
def __str__(self):
return "INSERT INTO score(class_id, student_id, score) VALUES({},{},{});".format(self.class_id, self.student_id, self.score)
def gen_score()->float:
return float(random.randint(550, 1000))/10
def gen_data() -> list:
student_list = []
idx = 0
for class_id in class_list:
for i in range(10):
idx += 1
student_list.append(Student(class_id, idx, gen_score()))
return student_list
if __name__ == '__main__':
student_list = gen_data()
for s in student_list:
print(s)
$ python3 make_insert.py > insert.sql
cat insert.sql
- 插入数据
INSERT INTO score(class_id, student_id, score) VALUES(1,1,68.0);
INSERT INTO score(class_id, student_id, score) VALUES(1,2,62.5);
INSERT INTO score(class_id, student_id, score) VALUES(1,3,57.9);
INSERT INTO score(class_id, student_id, score) VALUES(1,4,89.8);
INSERT INTO score(class_id, student_id, score) VALUES(1,5,89.9);
INSERT INTO score(class_id, student_id, score) VALUES(1,6,61.0);
INSERT INTO score(class_id, student_id, score) VALUES(1,7,65.8);
INSERT INTO score(class_id, student_id, score) VALUES(1,8,82.8);
INSERT INTO score(class_id, student_id, score) VALUES(1,9,63.3);
INSERT INTO score(class_id, student_id, score) VALUES(1,10,81.9);
INSERT INTO score(class_id, student_id, score) VALUES(2,11,98.5);
INSERT INTO score(class_id, student_id, score) VALUES(2,12,56.2);
INSERT INTO score(class_id, student_id, score) VALUES(2,13,70.3);
INSERT INTO score(class_id, student_id, score) VALUES(2,14,90.5);
INSERT INTO score(class_id, student_id, score) VALUES(2,15,81.9);
INSERT INTO score(class_id, student_id, score) VALUES(2,16,59.7);
INSERT INTO score(class_id, student_id, score) VALUES(2,17,62.0);
INSERT INTO score(class_id, student_id, score) VALUES(2,18,70.7);
INSERT INTO score(class_id, student_id, score) VALUES(2,19,82.2);
INSERT INTO score(class_id, student_id, score) VALUES(2,20,58.3);
INSERT INTO score(class_id, student_id, score) VALUES(3,21,93.8);
INSERT INTO score(class_id, student_id, score) VALUES(3,22,67.2);
INSERT INTO score(class_id, student_id, score) VALUES(3,23,71.3);
INSERT INTO score(class_id, student_id, score) VALUES(3,24,56.2);
INSERT INTO score(class_id, student_id, score) VALUES(3,25,93.9);
INSERT INTO score(class_id, student_id, score) VALUES(3,26,58.5);
INSERT INTO score(class_id, student_id, score) VALUES(3,27,95.9);
INSERT INTO score(class_id, student_id, score) VALUES(3,28,85.5);
INSERT INTO score(class_id, student_id, score) VALUES(3,29,59.4);
INSERT INTO score(class_id, student_id, score) VALUES(3,30,94.4);
INSERT INTO score(class_id, student_id, score) VALUES(4,31,77.4);
INSERT INTO score(class_id, student_id, score) VALUES(4,32,84.4);
INSERT INTO score(class_id, student_id, score) VALUES(4,33,79.0);
INSERT INTO score(class_id, student_id, score) VALUES(4,34,99.5);
INSERT INTO score(class_id, student_id, score) VALUES(4,35,95.2);
INSERT INTO score(class_id, student_id, score) VALUES(4,36,61.8);
INSERT INTO score(class_id, student_id, score) VALUES(4,37,72.1);
INSERT INTO score(class_id, student_id, score) VALUES(4,38,67.5);
INSERT INTO score(class_id, student_id, score) VALUES(4,39,81.4);
INSERT INTO score(class_id, student_id, score) VALUES(4,40,96.6);
INSERT INTO score(class_id, student_id, score) VALUES(5,41,64.1);
INSERT INTO score(class_id, student_id, score) VALUES(5,42,66.8);
INSERT INTO score(class_id, student_id, score) VALUES(5,43,75.0);
INSERT INTO score(class_id, student_id, score) VALUES(5,44,79.6);
INSERT INTO score(class_id, student_id, score) VALUES(5,45,73.1);
INSERT INTO score(class_id, student_id, score) VALUES(5,46,56.4);
INSERT INTO score(class_id, student_id, score) VALUES(5,47,74.4);
INSERT INTO score(class_id, student_id, score) VALUES(5,48,80.7);
INSERT INTO score(class_id, student_id, score) VALUES(5,49,62.9);
INSERT INTO score(class_id, student_id, score) VALUES(5,50,81.7);
INSERT INTO score(class_id, student_id, score) VALUES(6,51,86.7);
INSERT INTO score(class_id, student_id, score) VALUES(6,52,85.8);
INSERT INTO score(class_id, student_id, score) VALUES(6,53,83.7);
INSERT INTO score(class_id, student_id, score) VALUES(6,54,99.8);
INSERT INTO score(class_id, student_id, score) VALUES(6,55,82.5);
INSERT INTO score(class_id, student_id, score) VALUES(6,56,64.2);
INSERT INTO score(class_id, student_id, score) VALUES(6,57,83.5);
INSERT INTO score(class_id, student_id, score) VALUES(6,58,73.6);
INSERT INTO score(class_id, student_id, score) VALUES(6,59,72.8);
INSERT INTO score(class_id, student_id, score) VALUES(6,60,99.8);
INSERT INTO score(class_id, student_id, score) VALUES(7,61,90.1);
INSERT INTO score(class_id, student_id, score) VALUES(7,62,56.6);
INSERT INTO score(class_id, student_id, score) VALUES(7,63,76.4);
INSERT INTO score(class_id, student_id, score) VALUES(7,64,83.7);
INSERT INTO score(class_id, student_id, score) VALUES(7,65,80.7);
INSERT INTO score(class_id, student_id, score) VALUES(7,66,58.3);
INSERT INTO score(class_id, student_id, score) VALUES(7,67,68.0);
INSERT INTO score(class_id, student_id, score) VALUES(7,68,69.6);
INSERT INTO score(class_id, student_id, score) VALUES(7,69,70.9);
INSERT INTO score(class_id, student_id, score) VALUES(7,70,95.3);
INSERT INTO score(class_id, student_id, score) VALUES(8,71,79.7);
INSERT INTO score(class_id, student_id, score) VALUES(8,72,76.3);
INSERT INTO score(class_id, student_id, score) VALUES(8,73,61.1);
INSERT INTO score(class_id, student_id, score) VALUES(8,74,72.5);
INSERT INTO score(class_id, student_id, score) VALUES(8,75,55.7);
INSERT INTO score(class_id, student_id, score) VALUES(8,76,90.9);
INSERT INTO score(class_id, student_id, score) VALUES(8,77,61.8);
INSERT INTO score(class_id, student_id, score) VALUES(8,78,86.8);
INSERT INTO score(class_id, student_id, score) VALUES(8,79,94.7);
INSERT INTO score(class_id, student_id, score) VALUES(8,80,69.3);
INSERT INTO score(class_id, student_id, score) VALUES(9,81,73.4);
INSERT INTO score(class_id, student_id, score) VALUES(9,82,61.3);
INSERT INTO score(class_id, student_id, score) VALUES(9,83,66.8);
INSERT INTO score(class_id, student_id, score) VALUES(9,84,94.5);
INSERT INTO score(class_id, student_id, score) VALUES(9,85,56.6);
INSERT INTO score(class_id, student_id, score) VALUES(9,86,97.3);
INSERT INTO score(class_id, student_id, score) VALUES(9,87,66.2);
INSERT INTO score(class_id, student_id, score) VALUES(9,88,95.4);
INSERT INTO score(class_id, student_id, score) VALUES(9,89,60.1);
INSERT INTO score(class_id, student_id, score) VALUES(9,90,96.4);
INSERT INTO score(class_id, student_id, score) VALUES(10,91,68.8);
INSERT INTO score(class_id, student_id, score) VALUES(10,92,61.2);
INSERT INTO score(class_id, student_id, score) VALUES(10,93,70.2);
INSERT INTO score(class_id, student_id, score) VALUES(10,94,67.6);
INSERT INTO score(class_id, student_id, score) VALUES(10,95,89.2);
INSERT INTO score(class_id, student_id, score) VALUES(10,96,74.2);
INSERT INTO score(class_id, student_id, score) VALUES(10,97,68.0);
INSERT INTO score(class_id, student_id, score) VALUES(10,98,74.8);
INSERT INTO score(class_id, student_id, score) VALUES(10,99,85.3);
INSERT INTO score(class_id, student_id, score) VALUES(10,100,99.5);
- 写sql:
SELECT class_id, AVG(score) AS average_score
FROM score
GROUP BY class_id
ORDER BY average_score DESC
LIMIT 5;
MariaDB [xzc_test]> SELECT class_id, AVG(score) AS average_score
-> FROM score
-> GROUP BY class_id
-> ORDER BY average_score DESC
-> LIMIT 5;
+----------+---------------+
| class_id | average_score |
+----------+---------------+
| 6 | 83.24000 |
| 4 | 81.49000 |
| 3 | 77.61000 |
| 9 | 76.80000 |
| 10 | 75.88000 |
+----------+---------------+
5 rows in set (0.00 sec)
MariaDB [xzc_test]>