用windows下的MySQL语言建一张成绩表,字段自定义。成绩表里包括3门课程,每门课程至少输入10条记录。按照课程分类,将分数按照每门课程从高到低排序,并输出排序结果(如果分数相同,则排名也要相同)。
时间: 2024-03-15 09:45:41 浏览: 57
好的,根据你的要求,以下是建立成绩表并按照课程分类排序的MySQL语句:
首先,我们需要创建一个名为`score`的表,包含字段`id`、`name`、`course1`、`course2`、`course3`,分别表示学生编号、姓名、三门课程的成绩。
```mysql
CREATE TABLE score (
id INT UNSIGNED AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
course1 INT NOT NULL,
course2 INT NOT NULL,
course3 INT NOT NULL,
PRIMARY KEY (id)
);
```
然后,我们可以向表中插入一些测试数据,例如:
```mysql
INSERT INTO score (name, course1, course2, course3) VALUES
('小明', 85, 92, 78),
('小红', 76, 88, 95),
('小刚', 92, 85, 89),
('小丽', 78, 90, 83),
('小李', 93, 86, 90),
('小张', 88, 85, 91),
('小王', 79, 92, 87),
('小钱', 91, 87, 89),
('小周', 89, 91, 85),
('小赵', 85, 88, 89),
('小孙', 87, 90, 86),
('小吴', 90, 86, 92),
('小郑', 88, 89, 91),
('小陈', 91, 85, 87),
('小林', 85, 92, 86),
('小黄', 86, 89, 90),
('小江', 89, 87, 88),
('小郭', 92, 85, 89),
('小唐', 85, 89, 91),
('小曾', 90, 88, 86);
```
最后,我们可以使用以下语句查询每门课程的排序结果:
```mysql
SELECT name, course1, FIND_IN_SET(course1, (SELECT GROUP_CONCAT(course1 ORDER BY course1 DESC) FROM score)) AS rank1,
course2, FIND_IN_SET(course2, (SELECT GROUP_CONCAT(course2 ORDER BY course2 DESC) FROM score)) AS rank2,
course3, FIND_IN_SET(course3, (SELECT GROUP_CONCAT(course3 ORDER BY course3 DESC) FROM score)) AS rank3
FROM score
ORDER BY course1 DESC, course2 DESC, course3 DESC;
```
这条语句将查询每个学生的姓名和三门课程的分数,并使用`GROUP_CONCAT`函数将每门课程的分数按照降序排列并连接成一个字符串。然后,使用`FIND_IN_SET`函数查找每个学生在每门课程中的排名,最后按照三门课程的分数降序排序输出结果。
阅读全文