首页 > 数据库 >SQL练习

SQL练习

时间:2024-11-10 10:19:04浏览次数:1  
标签:chinese english -- 练习 grade score SQL math

数据库练习1

-- 期末成绩表(学号(21个字符的字符串,全数字,无重复),姓名,学校,年级,语数英成绩)
create table score(
	sid char(21) primary key,
	name varchar(20) ,
	school varchar(50),
	grade int,
	class int,
	chinese_score int,
	math_score int,
	english_score int,
	total_score int 
);

-- 每个学校、每个年级、每个班的各科平均分,最高分,及格人数
SELECT 
    school,
    grade,
    class,
    AVG(chinese_score) AS avg_chinese_score,
    MAX(chinese_score) AS max_chinese_score,
    SUM(CASE WHEN chinese_score >= 60 THEN 1 ELSE 0 END) AS pass_chinese_count,
    
    AVG(math_score) AS avg_math_score,
    MAX(math_score) AS max_math_score,
    SUM(CASE WHEN math_score >= 60 THEN 1 ELSE 0 END) AS pass_math_count,
    
    AVG(english_score) AS avg_english_score,
    MAX(english_score) AS max_english_score,
    SUM(CASE WHEN english_score >= 60 THEN 1 ELSE 0 END) AS pass_english_count
    
FROM 
    score
GROUP BY 
    school, grade, class
ORDER BY 
    school, grade, class;

-- 找到高二年级总分前100的学生,按分数降序排序,分数相同按学号,列出学号、姓名、科目、科目分数、学校、班级
select sid,name,chinese_score,math_score,english_score,total_score,school,grade
from score
where grade = 2
order by total_score desc,sid asc
limit 0 100;

-- 建立触发器,在插入数据时统计总分
CREATE TRIGGER before_insert_score
BEFORE INSERT ON score
FOR EACH ROW
SET NEW.total_score = NEW.chinese_score + NEW.math_score + NEW.english_score;


-- 建立索引:一般来说统计成绩有以下几种方式:
-- 1. 以班为单位(这里学校内部的班级)
-- 2. 以年级为单位(这里是每个学校的同一年级的对比)
-- 3. 以总分成绩排名统计

-- 1和2 可以通过建立联合索引(school,grade,class) 解决
-- 3 可以在总分成绩这里建立索引(total_score) 解决
create INDEX idx_school_grade_class on score(school,grade,class) ;
create INDEX idx_total_score on score(total_score);

标签:chinese,english,--,练习,grade,score,SQL,math
From: https://www.cnblogs.com/LIang2003/p/18537686

相关文章

  • MySQL中的事务与锁
    目录事务InnoDB和ACID模型 原⼦性的实现持久性的实现 ​隔离性的实现锁隔离级别 ​多版本控制(MVCC)事务1.什么是事务?事务是把⼀组SQL语句打包成为⼀个整体,在这组SQL的执⾏过程中,要么全部成功,要么全部失败,这组SQL语句可以是⼀条也可以是多条示例:转账的......
  • SQL基础操作全解析:从多表查询到表管理与约束
    一、引言SQL(StructuredQueryLanguage)是用于管理关系数据库的标准语言,在数据库操作中起着至关重要的作用。无论是数据的检索、插入、更新还是删除,以及数据库结构的创建和管理,都离不开SQL语句。本文将详细讲解SQL中的多表查询、创建和管理表(DDL)、数据处理(DML)以及约束等方面......
  • C++-练习-67
    题目:考虑下面的结构声明structcustomer{        charfullname[35];        doublepayment;};编写一个程序,它从栈中添加和删除customer结构(栈用Stack类声明)。每次customer结构被删除时,其payment的值都被添加到总数中,并报告总数。源代码:test.h#if......
  • 计算机毕设设计项目 基于PHP+MySQL校园购物网站的设计与实现
    标题: 基于PHP+MySQL校园购物网站的设计与实现基于PHP和MySQL的校园购物网站旨在为在校师生提供一个便捷的在线购物平台。以下是一些主要的功能模块及其详细说明:1.用户管理•注册与登录:•注册:用户可以通过邮箱、手机号或其他方式进行注册。•登录:用户通过用户名和密码......
  • 50个广泛使用的SQL关键字
    1.SELECT:用于从一个或多个数据表中检索数据。2.FROM:指定`SELECT`查询中数据来源的表。3.WHERE:用于过滤查询结果,指定选择条件。4.INSERTINTO:用于向表中插入新行。5.UPDATE:用于修改表中的数据。6.DELETE:用于从表中删除数据。7.CREATETABLE:用于创建新表。8.DROPT......
  • sql语句练习-心得及体会
    `我我我,又郁闷了,每次在本应该掌握的地方出问题,我的问题:代码:values=','.join(['%s']*len(data))与 k=', '.join('%s' * len(data)) 第一个问题:为什么要在'%s'外加个[]?在', '.['%s']*len(data)的返回结果是['%s......
  • Python--案例练习print(x>=y and ch < ‘b‘ and y)
    Python3运行x=23y=1ch='B'print(x>=yandch<'b'andy)解释:在表达式 x>=yandch<'b'andy 中:x>=y 是 True,因为23大于等于1。ch<'b' 是 True,因为'B'在ASCII表中比'b'小('B'......
  • AI 扩展开发者思维方式:以 SQL 查询优化为例
    在现代软件开发中,AI技术的兴起让开发者的思维方式发生了显著变化。尤其是在SQL查询优化、代码重构以及算法设计等领域,AI提供的建议不仅扩展了开发者的思考路径,还帮助他们发现以往没有意识到的潜在解决方案。1.传统思维模式下的SQL查询过去,开发者在编写SQL查询时通常......
  • 【MyBatis源码】SQL 语句构建器AbstractSQL
    文章目录介绍org.apache.ibatis.jdbc.SQLSQL类使用示例@SelectProvider搭配动态SQLAbstractSQL类源码分析介绍当我们需要使用Statement对象执行SQL时,SQL语句会嵌入Java代码中。SQL语句比较复杂时,我们可能会在代码中对SQL语句进行拼接,查询条件不固定时,还需要根据不同......
  • SQL经典实例(第2版) ([美] 安东尼 • 莫利纳罗 [澳] 罗伯特 • 德 • 格拉夫)
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqsoSQL基础与高级特性:概述SQL的基本语法和常用操作,并介绍一些高级特性,如窗口函数、递归查询等。统计分析应用:展示如何使用SQL进行统计分析,包括数据的汇总、分组、排序以及趋势分析等。报表制作技巧:介绍如何使用SQL制作报表,包......