From c91df9093238d057d881ca93a3f47db6b5a7b0a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Wed, 21 Sep 2022 13:45:33 +0000 Subject: [PATCH 1/8] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20=E9=99=86=E5=88=A9?= =?UTF-8?q?=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "\351\231\206\345\210\251\347\276\244/.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "\351\231\206\345\210\251\347\276\244/.keep" diff --git "a/\351\231\206\345\210\251\347\276\244/.keep" "b/\351\231\206\345\210\251\347\276\244/.keep" new file mode 100644 index 0000000..e69de29 -- Gitee From 525fcefd63eef12bb9e2539548e6d5c8a877f38b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Wed, 21 Sep 2022 13:45:51 +0000 Subject: [PATCH 2/8] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20=E9=99=86?= =?UTF-8?q?=E5=88=A9=E7=BE=A4=20=E4=B8=BA=2032=E9=99=86=E5=88=A9=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.keep" => "32\351\231\206\345\210\251\347\276\244/.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "\351\231\206\345\210\251\347\276\244/.keep" => "32\351\231\206\345\210\251\347\276\244/.keep" (100%) diff --git "a/\351\231\206\345\210\251\347\276\244/.keep" "b/32\351\231\206\345\210\251\347\276\244/.keep" similarity index 100% rename from "\351\231\206\345\210\251\347\276\244/.keep" rename to "32\351\231\206\345\210\251\347\276\244/.keep" -- Gitee From 6bd6abbaaebff539ecdc786ba852fd09a5d23072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Wed, 21 Sep 2022 13:46:11 +0000 Subject: [PATCH 3/8] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\344\275\234\344\270\232/.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/.keep" diff --git "a/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/.keep" "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/.keep" new file mode 100644 index 0000000..e69de29 -- Gitee From 9da45e2e62701b09dd7a8aaf923e108e73b6d3a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Wed, 21 Sep 2022 13:46:21 +0000 Subject: [PATCH 4/8] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\347\254\224\350\256\260/.keep" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/.keep" diff --git "a/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/.keep" "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/.keep" new file mode 100644 index 0000000..e69de29 -- Gitee From ad3563088d535f9abe849cc92bfbfec5fde5a2de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Wed, 21 Sep 2022 13:47:18 +0000 Subject: [PATCH 5/8] =?UTF-8?q?32=E9=99=86=E5=88=A9=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陆利群 <2246026162@qq.com> --- .../2022-09-18\347\254\224\350\256\260.md" | 85 ++++++ .../2022-09-20\347\254\224\350\256\260.md" | 285 ++++++++++++++++++ 2 files changed, 370 insertions(+) create mode 100644 "32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-18\347\254\224\350\256\260.md" create mode 100644 "32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-20\347\254\224\350\256\260.md" diff --git "a/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-18\347\254\224\350\256\260.md" "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-18\347\254\224\350\256\260.md" new file mode 100644 index 0000000..bdfa83b --- /dev/null +++ "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-18\347\254\224\350\256\260.md" @@ -0,0 +1,85 @@ + 主键:primary key + +自增:indentity(x,y)[从x开始每次增加y] + +非空:not null + +默认:default() + + check约束:chenk(条件) + +唯一:unique + +外键:(foreign key)references 表名(字段名) + +外键:Alter table 表名 add constraint 约束名 foreign key(字段名) references 主键表(字段) + +增加字段:Alter table 表名 add 字段名 条件 + + + +SQL语句执行顺序: + +1.FROM + +2.ON + +3. **JOIN** + +4.**WHERE** + +5.**GROUP** **BY** + +6. HAVING + +7.**SELECT** + +8.**DISTINCT** + +9.**ORDER** **BY** + +10.**LIMIT** + + + +聚合函数: + +1.count:求数量 + +2.**max**:求最大值 + +3.**min**:求最小值 + +4.**sum**:求和 + +5.**avg**:求平均值 + + + +sql中常用的时间函数: + +**select** DATEDIFF(**day**, '2019-08-20', getDate()); --获取指定时间单位的差值 + +**SELECT** DATEADD(**MINUTE**,-5,GETDATE()) --加减时间,此处为获取五分钟前的时间,MINUTE 表示分钟,可为 YEAR,MONTH,DAY,HOUR + +**select** DATENAME(**month**, getDate()); --当前月份 + +**select** DATENAME(WEEKDAY, getDate()); --当前星期几 + +**select** DATEPART(**month**, getDate()); --当前月份 + +**select** **DAY**(getDate()); --返回当前日期天数 + +**select** **MONTH**(getDate()); --返回当前日期月数 + +**select** YEAR(getDate()); --返回当前日期年数 + +**SELECT** **CONVERT**(VARCHAR(22),GETDATE(),20) --2020-01-09 14:46:46 + +**SELECT** **CONVERT**(VARCHAR(24),GETDATE(),21) --2020-01-09 14:46:55.91 + +**SELECT** **CONVERT**(VARCHAR(22),GETDATE(),23) --2020-01-09 + +**SELECT** **CONVERT**(VARCHAR(22),GETDATE(),24) --15:04:07 + +**Select** **CONVERT**(varchar(20),GETDATE(),14) --15:05:49:330 diff --git "a/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-20\347\254\224\350\256\260.md" "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-20\347\254\224\350\256\260.md" new file mode 100644 index 0000000..e0fee72 --- /dev/null +++ "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-20\347\254\224\350\256\260.md" @@ -0,0 +1,285 @@ +## 回顾 + +1. 变量的使用。要先用DECLARE 关键字声明,然后用SET或SELECT赋值。局部变量前必须有 “@” 作前缀,全局变量必须有 “@@” 作前缀。 +2. 变量的输出可以用:PRINT或SELECT语句。 +3. 逻辑控制语句提供了条件操作所需的顺序和逻辑。 +4. 批处理可以提高语句执行的效率,使用“GO”作为结束标志。 + + + +## 嵌套/子查询 + +#### 什么是子查询? + +**问题:编写T-SQL语句,查询“黄炜杰”同学的分数大于80 分的考试成绩记录?** + +```sql +--实现方式1:连接查询 +--实现方式2: 子查询 +``` + + + +#### 子查询的特点和优势 + +1)使用灵活。 + +1. 可以成为SQL 语句的多个部分。 +2. **子查询作为查询条件使用**。 + +```sql +--练习:查询学号在曾鹏前面的同学信息 +``` + +1. **子查询作为临时表使用**。 from () + +```sql +--练习:查询所有学生的HTML成绩,如果学生没有成绩显示null +``` + +1. **子查询作为列使用**。 + +```sql +--练习:查询所有学生的HTML成绩,如果学生没有成绩显示null +``` + +2)降低SQL 的语句的复杂度,提高SQL 语句的可读性。 + +#### 子查询 + +![](https://gitee.com/snailclass/tuchuang/raw/master/img/image-20220906173549480-2022-9-1913:24:45.png) + +##### 按结果分类 + +###### 标量子查询 : + +**通常可以使用连接查询替代** + +标量子查询是指子查询返回的是**单一值**,如一个数字或一个字符串。 + +```sql +--1.查询书目表(tb_bibliography)中,条码号(barcode)为"TP311.13"图书(需要在图书表中先查找"TP31L13"的ISBN号)的图书名称(name)和作者(author) + + +--2.查询借阅表(tb-record)中姓名为"邓承明"(需要在学生表中先查找"邓承明'的学号)的学生的借阅信息,显示学号(stu-num)和条码号(barcode) +``` + + + +###### 列子查询 + +**列子查询是指子查询返回的结果集是N行1列**,该结果通常来自对表某个字段的查询结果,带in关键字的子查询是最常用的一类子查询,在使用in关键字进行查询时,子查询语句返回的结果应该是一个数据列中的多个值,如果仅返回1个数值,则可用标量子查询代替。 + +```sql +--in习题 +--查询学生表(tb-student)中和黄弘相同专业学生读者的学号(stu-num)姓名(name)和专业(major) +--先查询 黄宏的 专业 +select major from tb_student where name='黄弘' +--in代表:只要符合后面的条件就筛选出来 +select * from tb_student where major in (select major from tb_student where name='黄弘') + + +--查询学生表(tb-student)中还未还书的读者的学号(stu-num)和姓名(name) +--查询未还书学生的学号 +select stu_num from tb_record where return_time is null +--通过学号查询学生姓名 +select * from tb_student where stu_num in (select stu_num from tb_record where return_time is null) + + +--all any some 习题 +--1.查询学生表(tb-student)中,比信息学院出生日期最大的还要大的所有学生记录,即比信息学院年龄最小的还要小的所有记录,使用ALL关键字,显示学生的姓名(name)、出生日期(birth)和所属学院(school),同样的结果尝试用max()函数再实现一次。 +--信息学院学生最小年龄 +select birth from tb_student where school='信息学院' +select max(birth) from tb_student where school='信息学院' + +select * from tb_student where birth>(select max(birth) from tb_student where school='信息学院' ) + +--all关键字:>,<,= +select * from tb_student where birth>all(select birth from tb_student where school='信息学院') +--2.查询学生表(tb-student)中,比信息学院出生日期最小的还要大的所有学生记录,即比信息学院年龄最大的还要小的所有记录,使用ANY关键字,显示学生的姓名(name)、出生日期(birth)和所属学院(school)。尝试用SOME关键字代替ANY,重新执行后观察查询结果。 +select * from tb_student where birth>any(select birth from tb_student where school='信息学院') +select * from tb_student where birth>some(select birth from tb_student where school='信息学院') +--3.查询书目表(tb-bibliography)中,使用ANY关键字,每种类型中最贵的图 书名称(name)和价格(price) +-- =any 与 in 等价 +select max(price) 最贵的价格 from tb_bibliography group by category +select name 图书名称,price 价格 from tb_bibliography +where price in (select max(price) 最贵的价格 from tb_bibliography group by category) + +``` + + + +###### 行子查询 + +行子查询是指子查询返回的结果集是1行N列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集。 + +```sql +--(1)查询书目表(tb_bibliography)中与《管理信息系统实用教程(第3版)》同作者(author),同类型(category)的书。 +--(2)查询学生表(tb_student)中与"邹睿睿'在同一个学院(school)且同一年级(学号头两位相同则表明在同一年级)学生的学号、姓名和学院。 +``` + + + +###### 表子查询(from子查询) + +表子查询是指子查询返回是M行N列的结果集,查询语句可嵌套在FROM关 +键字后,且需要定义别名。 + +```sql +--查询每种图书在馆的本数,显示ISBN号(ISBN)、图书名称(name)和该图书的在馆数量。 +``` + + + +##### 按位置分类 + +###### exists子查询 + +关键字EXISTS构造子查询时,当子查询的结果集不为空时,则EXISTS返回的结果为TRUE,外层查询语句进行查询;当子查询的结果集为空时,则EXISTS返回的结果为FALSE,外层查询语句不进行查询。 + +```sql +--(1)查询学生表(tb-student)中,是否有学生读者的姓名是"黄弘" +if exists(select stu_num from tb_record where stu_num in (select stu_num from tb_student where name='黄弘') and return_time is null) + print '有' +else + print '没有' + +--(2)查询书目表(tb-bibliography)中,库存数为0的书目名称(name) +``` + +## 排序函数 + +**排序函数 OVER( [分组子句] 排序子句[DESC][ASC] )** + +**排序子句 :ORDER BY 排序列,排序列…** + +练习:使用各个排名函数对学员的Java 成绩进行排名,并仔细体会其中排序函数的具体用法与其中的区别。 + +```sql + +``` + +- ROW_NUMBER()函数生成的排序根据排序子句给出**递增连续的序号** +- RANK()函数生成的排序根据排序子句给出**递增的序号,但是存在并列并且跳空** +- DENSE_RANK() 函数生成的排序根据排序子句给出**递增的序号,但是存在并列不跳空** + +根据上面三个函数,我们可以增加一个序列,但是有时候我们需要对数据进行分组,然后对分组后的数据进行增加序列,PARTITION BY可以与以上三个函数联合使用 + +```sql +--学生的Java成绩,并根据成绩排名 +--row_number() +select StuName 姓名,ROW_NUMBER() over(order by score desc) 排名,score 分数 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +--rank() +select StuName 姓名,rank() over(order by score desc) 排名,score 分数 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +--DENSE_RANK() + select StuName 姓名,dense_rank() over(order by score desc) 排名,score 分数 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +``` + + + + + +## 分页查询 + +#### 分页方案一 + +**使用top分页** + +```sql +declare @PageSize int = 5 -- 每页5条 +declare @PageIndex int = 2 --第2页 +select top(@PageSize) * from Student +where Stuid not in (select top(@PageSize)*(@PageIndex-1)) StuId from Student +``` + + + +#### 分页方案二 + +**使用row_number分页** + +```sql +declare @PageSize int = 5 +declare @PageIndex int = 3 +select * from +(select ROW_NUMBER() over(order by StuId) RowId,*from Student) as Temp +where RowId between (@PageIndex-1)*@PageSize+1 and @PageIndex*PageSize +``` + + + + + + + +## 作业 + +#### 子查询练习 + +1. 关羽的银行卡号为"6225547858741263",查询出余额比关羽多的银行卡信息,显示卡号,身份证,姓名,余额。 +2. 从所有账户信息中查询出余额最高的交易明细(存钱取钱信息)。 + +1. 查询有取款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 +2. 查询出没有存款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 +3. 关羽的银行卡号为"6225547858741263",查询当天是否有收到转账。 +4. 查询出交易次数(存款取款操作)最多的银行卡账户信息,显示:卡号,身份证,姓名,余额,交易次数。 + +1. 查询出没有转账交易记录的银行卡账户信息,显示卡号,身份证,姓名,余额。 + + + +#### 分页查询练习 + +```sql +--数据结构和数据如下: +create table Student +( + StuId int primary key identity(1,2), --自动编号 + StuName varchar(20), + StuSex varchar(4) +) +insert into Student(StuName,StuSex) values('刘备','男') +insert into Student(StuName,StuSex) values('关羽','男') +insert into Student(StuName,StuSex) values('张飞','男') +insert into Student(StuName,StuSex) values('赵云','男') +insert into Student(StuName,StuSex) values('马超','男') +insert into Student(StuName,StuSex) values('黄忠','男') +insert into Student(StuName,StuSex) values('魏延','男') +insert into Student(StuName,StuSex) values('简雍','男') +insert into Student(StuName,StuSex) values('诸葛亮','男') +insert into Student(StuName,StuSex) values('徐庶','男') +insert into Student(StuName,StuSex) values('周仓','男') +insert into Student(StuName,StuSex) values('关平','男') +insert into Student(StuName,StuSex) values('张苞','男') +insert into Student(StuName,StuSex) values('曹操','男') +insert into Student(StuName,StuSex) values('曹仁','男') +insert into Student(StuName,StuSex) values('曹丕','男') +insert into Student(StuName,StuSex) values('曹植','男') +insert into Student(StuName,StuSex) values('曹彰','男') +insert into Student(StuName,StuSex) values('典韦','男') +insert into Student(StuName,StuSex) values('许褚','男') +insert into Student(StuName,StuSex) values('夏侯敦','男') +insert into Student(StuName,StuSex) values('郭嘉','男') +insert into Student(StuName,StuSex) values('荀彧','男') +insert into Student(StuName,StuSex) values('贾诩','男') +insert into Student(StuName,StuSex) values('孙权','男') +insert into Student(StuName,StuSex) values('孙坚','男') +insert into Student(StuName,StuSex) values('孙策','男') +insert into Student(StuName,StuSex) values('太史慈','男') +insert into Student(StuName,StuSex) values('大乔','女') +insert into Student(StuName,StuSex) values('小乔','女') +``` + +**方式一:使用row_number** + +**方式二:使用top分页** + -- Gitee From 76f95b2892a42d44ae838050fdfb8f073551b80c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Wed, 21 Sep 2022 13:47:57 +0000 Subject: [PATCH 6/8] =?UTF-8?q?32=E9=99=86=E5=88=A9=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陆利群 <2246026162@qq.com> --- ...4\346\254\241\344\275\234\344\270\232.sql" | 56 +++++++++++++++++++ ...1\346\254\241\344\275\234\344\270\232.sql" | 41 ++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 "32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-18\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sql" create mode 100644 "32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-20\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.sql" diff --git "a/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-18\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sql" "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-18\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..d1d374c --- /dev/null +++ "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-18\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sql" @@ -0,0 +1,56 @@ +select * from Department +select * from [Rank] +select * from People + +--1. ѯ人еԱϢҪʾԼԱϸ +select p.*,d.DepartmentName from People p +join Department d on d.DepartmentId=p.DepartmentId +where PeopleAddress='人' + + +--2. ѯ人еԱϢҪʾƣְԼԱϸ +select p.*,d.DepartmentName,r.RankName from People p +join Department d on d.DepartmentId=p.DepartmentId +join Rank r on r.RankId=p.RankId +where PeopleAddress='人' + +--3. ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʡ +select DepartmentId,COUNT(*)Ա,SUM(PeopleSalary)Աܺ, +AVG(PeopleSalary)ƽ,MAX(PeopleSalary)߹,MIN(PeopleSalary)͹ from People +group by DepartmentId + +--4. ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʣ +--ƽ10000 µIJͳƣҸƽʽС +select DepartmentId,COUNT(*)Ա,SUM(PeopleSalary)Աܺ, +AVG(PeopleSalary)ƽ,MAX(PeopleSalary)߹,MIN(PeopleSalary)͹ from People +group by DepartmentId +having AVG(PeopleSalary)>=10000 +order by ƽ desc + +--5. ݲƣȻְλƣͳԱԱܺͣƽʣ߹ʺ͹ +select d.DepartmentName ,COUNT(*) Ա,SUM(PeopleSalary) Աܺ , +AVG(PeopleSalary) ƽ,MAX(PeopleSalary) ߹,MIN(PeopleSalary) ͹ from People p +join Department d on d.DepartmentId=p.DepartmentId +group by d.DepartmentName,RankId + +--6.ѯз 6.22--7.22 ԱϢ +select * from People where +(MONTH(PeopleBirth)=6 and DAY(PeopleBirth)>=22) or +(MONTH(PeopleBirth)=7 and DAY(PeopleBirth)<=22) + +--7.ѯԱϢһʾ(,ţ,,,,,,,,,,) +select *,case YEAR(PeopleBirth) % 12 +when 4 then '' +when 5 then 'ţ' +when 6 then '' +when 7 then '' +when 8 then '' +when 9 then '' +when 10 then '' +when 11 then '' +when 0 then '' +when 1 then '' +when 2 then '' +when 3 then '' +end + from People \ No newline at end of file diff --git "a/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-20\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.sql" "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-20\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..98930b0 --- /dev/null +++ "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-20\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.sql" @@ -0,0 +1,41 @@ + +select * from AccountInfo --Ϣ +select * from BankCard --пϢ +select * from CardStateChange --п״̬ı +select * from CardTransfer --ת˱ +select * from CardExchange --׼¼ + +--1. пΪ"6225547858741263"ѯȹпϢʾţ֤ +select b.CardNo , AccountCode ֤ , RealName , b.CardMoney from AccountInfo a +join BankCard b on b.AccountId=a.AccountId +where a.AccountId =any (select AccountId from BankCard where CardMoney >(select CardMoney from BankCard where CardNo ='6225547858741263')) ; + +--2. ˻ϢвѯߵĽϸ(ǮȡǮϢ) +select * from CardExchange where CardNo =any ( +select a.CardNo from (select CardNo,RANK() over (order by CardMoney desc) sort from BankCard ) a +where a.sort=1 +) + +--3. ѯȡ¼п˻Ϣʾţ֤ +select b.CardNo ,a.AccountCode ,a.RealName,b.CardMoney from AccountInfo a +inner join BankCard b on a.AccountId=b.AccountId +where CardNo =any (select distinct CardNoOut from CardTransfer) + +--4. ѯûд¼п˻Ϣʾţ֤ +select CardNo,AccountCode,RealName,CardMoney from BankCard b +inner join AccountInfo a on a.AccountId=b.AccountId +where CardNo not in (select CardNo from CardExchange) + +--5. пΪ"6225547858741263",ѯǷյתˡ +select * from CardTransfer where CardNoIn ='6225547858741263' + +--6. ѯ״ȡп˻Ϣʾţ֤״ +select b.CardNo, AccountInfo .AccountCode,AccountInfo .RealName,b.CardMoney,a.cou from BankCard b inner join +(select CardNo,COUNT(*) cou,RANK() over (order by count(*) desc) sort from CardExchange group by CardNo) a on b.CardNo=a.CardNo +inner join AccountInfo on AccountInfo.AccountId=b.AccountId +where a.sort=1 + +--7. ѯûת˽׼¼п˻Ϣʾţ֤ +select CardNo,AccountCode,RealName,CardMoney from BankCard b +inner join AccountInfo a on a.AccountId=b.AccountId +where CardNo not in (select CardNoOut from CardTransfer) -- Gitee From 6055bf41d9184c74a557e107cdf838ace9cf69ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Thu, 22 Sep 2022 03:53:57 +0000 Subject: [PATCH 7/8] =?UTF-8?q?32=E9=99=86=E5=88=A9=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陆利群 <2246026162@qq.com> --- ...3\346\254\241\344\275\234\344\270\232.sql" | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 "32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-22\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232.sql" diff --git "a/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-22\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232.sql" "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-22\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..36c2e9e --- /dev/null +++ "b/32\351\231\206\345\210\251\347\276\244/\344\275\234\344\270\232/2022-09-22\347\254\254\345\233\233\346\254\241\344\275\234\344\270\232.sql" @@ -0,0 +1,40 @@ +select * from Student;--ѧ +select * from Course;--γ̱ +select * from Teacher;--ʦ +select * from SC;--ɼ + +--13. ƽɼӸߵʾѧпγ̵ijɼԼƽɼ +select sc.sid,c.Cname,sc.score,sc1.ƽ from sc +join Course c on c.CId=sc.CId +join(select sid, avg(score)ƽ from sc group by SId) sc1 on sc1.SId=sc.SId +order by sc1.ƽ desc + +--14. ѯƳɼ߷֡ͷֺƽ֣ + +--ʽʾγ IDγ name߷֣ͷ֣ƽ֣ʣеʣʣ + +--Ϊ>=60еΪ70-80Ϊ80-90Ϊ>=90 + +--Ҫγ̺źѡѯУͬγ̺ +SELECT co.cid AS γid ,co.Cname AS γ,MAX(sc.score) AS ߷, MIN(sc.score)AS ͷ ,AVG(sc.score) AS ƽ , + SUM(CASE WHEN sc.score >= 60 THEN 1 ELSE 0 END)/COUNT(sc.[SId]) AS , + SUM(CASE WHEN sc.score >= 70 AND sc.score< 80 THEN 1 ELSE 0 END)/COUNT(sc.[SId]) AS е, + SUM(CASE WHEN sc.score >= 80 AND sc.score<90 THEN 1 ELSE 0 END)/COUNT(sc.[SId]) AS , + SUM(CASE WHEN sc.score >= 90 THEN 1 ELSE 0 END)/COUNT(sc.[SId]) AS +FROM Course co +inner join SC on co.CId=sc.CId +group by co.cid ,co.Cname + +--15. Ƴɼ򣬲ʾ Score ظʱοȱ +select *,RANK() over(partition by cid order by score desc) rank from sc + +--15.1 Ƴɼ򣬲ʾ Score ظʱϲ +select *,DENSE_RANK() over(partition by cid order by score desc) rank from sc + +--16. ѯѧܳɼܷظʱοȱ +select sid,sum(score),rank() over(partition by sid order by sum(score) desc) rank from sc +group by sid + +--16.1 ѯѧܳɼܷظʱοȱ +select sid,sum(score),ROW_NUMBER() over(partition by sid order by sum(score)desc) rank from sc +group by sid \ No newline at end of file -- Gitee From a57aaa39b2690aa0d60b3fdeaf7daf1a9b9d13bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=86=E5=88=A9=E7=BE=A4?= <2246026162@qq.com> Date: Thu, 22 Sep 2022 03:54:21 +0000 Subject: [PATCH 8/8] =?UTF-8?q?32=E9=99=86=E5=88=A9=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 陆利群 <2246026162@qq.com> --- .../2022-09-22\347\254\224\350\256\260.md" | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 "32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-22\347\254\224\350\256\260.md" diff --git "a/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-22\347\254\224\350\256\260.md" "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-22\347\254\224\350\256\260.md" new file mode 100644 index 0000000..8f4794c --- /dev/null +++ "b/32\351\231\206\345\210\251\347\276\244/\347\254\224\350\256\260/2022-09-22\347\254\224\350\256\260.md" @@ -0,0 +1,22 @@ +--查询男生和女生中年龄最大的学生信息,要求显示:姓名,性别,年龄 --非关联子查询 + +``` +select birth,name 姓名,gender 性别 from tb_student +where birth in (select min(birth) from tb_student group by gender) +``` + +--关联子查询:内部查询需要引用外部表已查询出的信息 + +``` +select birth,name 姓名,gender 性别 from tb_student t1 +where birth = (select min(birth) from tb_student t2 where t2.gender=t1.gender) +``` + +--窗口函数:排序 + +``` +select birth,姓名,性别 from ( +select birth,name 姓名,gender 性别,row_number() over (partition by gender order by birth ) as birth_rank from tb_student +) as T1 +where T1.birth_rank = 1 +``` \ No newline at end of file -- Gitee