原表table (姓名,科目,分数) 要求新表为(姓名,语文,数学,外语,总分,平均分) 用sql怎么写
时间: 2024-04-25 19:23:00 浏览: 239
多表的sql文的书写
你可以使用以下SQL语句来创建新表并将原表中的数据转换为新表的格式:
```
CREATE TABLE new_table (
姓名 VARCHAR(50),
语文 INT,
数学 INT,
外语 INT,
总分 INT,
平均分 DECIMAL(5,2)
);
INSERT INTO new_table (姓名, 语文, 数学, 外语, 总分, 平均分)
SELECT
姓名,
SUM(CASE WHEN 科目 = '语文' THEN 分数 ELSE 0 END) AS 语文,
SUM(CASE WHEN 科目 = '数学' THEN 分数 ELSE 0 END) AS 数学,
SUM(CASE WHEN 科目 = '外语' THEN 分数 ELSE 0 END) AS 外语,
SUM(分数) AS 总分,
AVG(分数) AS 平均分
FROM 原表
GROUP BY 姓名;
```
请将"原表"替换为你实际的表名,"姓名"、"科目"和"分数"替换为你实际的列名。这个SQL语句将会创建一个新的表"new_table",并将原表中的数据按照姓名进行分组,并计算每个人的语文、数学、外语的总分和平均分,并插入到新表中。
#### 引用[.reference_title]
- *1* [查询每个学生的各科成绩sql语句](https://blog.csdn.net/Java_WuYY/article/details/50956119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [sql 查询出各科成绩、平均成绩,总成绩,根据总成绩分数相同,排名相同](https://blog.csdn.net/qq_32196937/article/details/79632626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文