第七单元 条件查询,分组查询

这篇具有很好参考价值的文章主要介绍了第七单元 条件查询,分组查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 条件查询

条件查询是通过where子句进行检索的查询方式。

select 字段名1, 字段名2, …, 字段名n 
from 数据表名
where 查询条件

 

1. 如何使用排序(升序,降序)?

asc:表示升序(默认排序方式) desc:降序

排序语法:select ... from 表名 [条件] order by 要排序的字段 asc/desc

-- 将成绩从高到低进行排序
select * from StudentScore order by (theoryScore+skillScore) 
​
​
-- 查询学生表,按姓名升序显示
select * from StudentInfo order by stuName asc -- asc 可以省略

 

 

2. 多字段如何排序?

语法: select ... from 表名 [条件] order by 第一要排序的字段 asc/desc , 第二要排序的字段 asc/desc

 -- 查询成绩表,先按学生编号从低到高排序,再按成绩从高到低显示
 select * from StudentScore order by stuId asc,(theoryScore+skillScore) desc


 -- 查询学生信息,先按班级进行升序,再按生日进行降序
 select * from StudentInfo order by ClassId asc ,stuBirthday desc

 

 

3. 如何使用关系表达式查询(大于,小于,等于)?

 -- 查询 班级编号 在 1,3,5,7 里的学生信息
 select * from StudentInfo where ClassId in(1,3,5,7)


-- 查询班级编号 不是偶数的学生信息
select * from StudentInfo where ClassId%2!=0

-- 查询技能成绩大于90分的成绩信息
select * from StudentScore where skillScore>90

 

 

4. 如何使用between...and 的语法?

between ... and :在...之间,应用范围:数字类型

-- 查询技能成绩在60-80之间的成绩信息
-- 写法1
select * from StudentScore where  skillScore between 60 and 80
-- 写法2
select * from StudentScore where  skillScore>=60 and skillScore<=80

 

 

5. 如何统计个数,平均分,最大数,最小数,求和?

函数 字段类型 描述
Min(字段) 数字类型 最小值
Max(字段) 数字类型 最大值
Sum(字段) 数字类型 总和
count(字段) 无限制 个数
count(distinct 字段) 无限制 去重后,求个数
avg(字段) 数字类型 平均数
-- 统计学生的个数
 select count(stuId) from StudentInfo

 -- 统计女生的个数
 select count(stuId) as 女生个数 from StudentInfo where stuSex=''



 -- 查询学生平均分
 select avg(skillScore+theoryScore) from StudentScore

 -- 查询课程名称为'C# 入门编程'的平均分
  select avg(skillScore+theoryScore) from StudentScore where CourseName='C# 入门编程'

 -- 查询班级编号最大的班级
 -- 写法1
 select max(classId) from StudentInfo
 -- 写法2
select top 1 (skillScore+theoryScore) from StudentScore order by (skillScore+theoryScore) desc
 
 -- 计算最低分
 -- 写法1
select min(skillScore+theoryScore) from StudentScore
-- 写法2
select top 1 (skillScore+theoryScore) from StudentScore order by (skillScore+theoryScore) asc



 -- 计算技能总分
 select sum(skillScore) from StudentScore

-- 计算学生编号为180325011 的技能总分
select sum(skillScore) from StudentScore where stuId='180325011'


-- 查询有多少个人参加了考试
select count(distinct stuId) from StudentScore
 

 

2. 聚合函数

6. 能否将所有聚合函数写在一起?

select 
count(distinct stuId) 学生数量,
Min(skillScore) 最小值,
Max(skillScore) 最大值,
Sum(skillScore) 总和
from StudentScore

 

3. exists 查询

功能:用于嵌套查询 exists后的查询语句有结果则为真,无结果则为假,如果为真,则执行外层查询,否则外层查询不执行 语法格式:

select 字段名1, 字段名2, …, 字段名n 
from 数据表名
where exists
(select 字段名 from 数据表名 where …)
-- 如果存在大于20岁,则查询结果,
select * from StudentInfo where exists
(
    select * from StudentInfo where year(getdate())-year(stuBirthday)>20
)

 
--如果班级里面有两个以上的老王,则把老王的信息查询出来
select * from StudentInfo where exists
(
    select * from
    (
        select count(stuId) as 数量 from StudentInfo where stuName like '王%'
    ) a where a.数量>=1
)
 

 

4. 分组查询

8.如何使用分组查询?他们的关键字分别是什么?

-语法:select 要分组的字段,聚合函数 from 表名 group by 要分组的字段

-group by:分组

小技巧: 每什么就以哪个字段进行分组

--9.计算每门课程的平均分
select CourseName, avg(skillScore) as 平均分 from StudentScore group by CourseName


--10.统计每个学生的平均分
select stuId,avg(skillScore+theoryScore) from StudentScore group by stuId

-- 统计每个班级有多少个学生
select ClassId,Count(stuId) as 个数 from StudentInfo group by ClassId

 
-- 统计每门课程有多少位同学在学习
select CourseName,count(stuId) from StudentScore group by CourseName


-- 统计每个学生学习了多少门课程
select stuId,count(CourseName) from StudentScore group by stuId


--11.查看每一门课程的平均分,总分,最高分,最低分
select CourseName,avg(skillScore),sum(skillScore),max(skillScore),min(skillScore)
from StudentScore group by CourseName

-- 11.1 查询每门课程,每个学生的最低分
select CourseName,stuId,min(skillScore) from StudentScore group by CourseName,stuId

--12.统计每门课程的最低分,并且查询出70分以上的
-- having:在分组的基础之上进行数据过滤
select CourseName,min(skillScore) from StudentScore group by CourseName
having min(skillScore)>70


--13.统计每门课程,但不包含课程C# 入门编程的最低分,并且查询出70分以上的

--  13.1统计每门课程最低分
select CourseName,min(skillScore) from StudentScore group by CourseName
--  13.2 在统计之前加上where 课程!=C# 入门编程
select CourseName,min(skillScore) from StudentScore where CourseName!='C# 入门编程' 
group by CourseName 
--  13.3 在统计之后加上having 最低分>=70
select CourseName,min(skillScore) from StudentScore where CourseName!='C# 入门编程' 
group by CourseName  having min(skillScore)>70

--14.查询每门课程学习的人数大于等于2人的课程名称与学习人数。
select CourseName,count(stuId) from StudentScore group by CourseName
having count(stuId)>=2

-- 15.查询不只学了一门课程的学生编号与学习的课程数
-- 翻译成人话:每个学生学习的课程数,并且学习的数量大于1
select stuId,count(CourseName) from StudentScore group by stuId
having count(CourseName)>1

 

5. 作业

在线教育平台,网站首页显示所有课程分类,将分类后的信息显示出来供用户选择,创建数据库Education_DB,创建表(根据说明创建符合规范的表),如图所示

课程表:

列名 数据类型 说明
CourseId int 课程编号,自增1,主键
CourseName char(20) 课程名称,非空

 

用户选课表

列名 数据类型 说明
Customer_Id int 用户编号、自增1,主键
Customer_Name Varchar(20) 用户名称、非空
Customer_Sex Varchar(2) 用户性别、只能是男或女
Customer_Age int 用户年龄、年龄>=0
Customer_Phone Varchar(20) 用户手机号码、唯一
Customer_Address Varchar(20) 用户籍贯、非空、默认北京
CourseId int 课程编号、外键

 

1、添加数据,如图所示,用户选课表至少添加五条数据

第七单元 条件查询,分组查询

 

一、案例题目

  1. 创建两张表并添加约束。(15分)

  2. 每张表添加5条数据(5分)

  3. 查询用户选课信息表的前3条数据(5分)

  4. 查询用户选课信息表中年龄大于20的用户信息(5分)

  5. 查询用户选课信息表中性别为女的信息(5分)

  6. 查询用户选课信息表中用户名称、用户性别和用户年龄并为查询的字段起中文别名(5分)

  7. 查询用户选课信息表的信息并按照年龄升序排列(5分)

  8. 查询用户选课信息表中所有用户的年龄总和(5分)

  9. 查询用户选课信息表中所有用户的最小年龄(5分)

  10. 查询用户选课信息表中所有用户的最大年龄(5分)

  11. 查询用户选课信息表中所有用户的平均年龄(5分)

  12. 查询用户选课信息表中一共有多少条数据(5分)

  13. 查询姓李的用户信息(5分)

  14. 查询姓张的两个字的用户信息(5分)

  15. 查询每个课程有多少人选择(5分)

  16. 查询大于平均年龄的用户信息(5分)

  17. 查询大于平均年龄的前2条信息(5分)

  18. 查询学习C#课程的人数(5分) 

 

配套视频链接:SQLServer 入门基础 - 网易云课堂 (163.com)文章来源地址https://www.toymoban.com/news/detail-747033.html

到了这里,关于第七单元 条件查询,分组查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql 数据库DQL 数据查询语言 SELECT 基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询——包含DQL所有查询语句。吐血分享。

    DQL:数据查询语言; 用来对表内的数据进行查找 。Database Query Language SQL语句分为:基本查询、条件查询、聚合查询、分组查询、排序查询、分页查询。  可以发现name字段就只剩下一个张三了;   条件: 条件查询—比较运算符 比较运算符 功能 大于 = 大于等于 小于 = 小于等

    2024年01月19日
    浏览(53)
  • 【数据库】通过实例讲清楚,Mongodb的增删查改,分组查询,聚合查询aggregate

    目录 一.基础概念 二.数据库的管理 1.创建数据库 2.删除数据库 二.集合的管理 1.显示所有集合 2.创建集合 3.删除当前集合 4.向集合中插入元素 三.文档的管理 1.文档插入 2.文档的更新 3.文档的删除 4.文档查询 (1)查询基本语法: (2)查询table2集合下的所有文档 (3)查询t

    2024年02月10日
    浏览(41)
  • java根据分组函数GroupingBy进行多个条件组合分组

    在SQL中经常会用到分组,我们也常常遇到一些组合分组的场景。 java8分组 传统写法(单个字段分组) 场景:根据 城市 进行分组 使用的是方法引用:User::getCity 来完成分组 java8分组 传统写法(多个字段分组) 场景:根据 城市,性别进行分组 一般的写法会是下面的这种写法,

    2023年04月19日
    浏览(42)
  • 第七单元 调试与异常捕捉

    很多时间,写代码并不能一撸到底,中间都是经历过无数次的调试,才能正常正确的运行起来。就好像一台设备刚买来也需要不断的调试才能达到最佳状态。 DotNet 程序的调试,是 DotNet 程序员必备的技能之一,开发出稳定的程序、解决程序的疑难杂症都需要很强大的调试能力

    2024年02月06日
    浏览(45)
  • mysql 分组函数,分组查询

    #1.分组函数 功能:用作统计使用,又称聚合函数,统计函数,组函数 分类: sum :求和,avg 平均值,max最大值,min最小值,count计算个数 特点: sum, avg 一般用于处理数值型 max ,min ,count 可以处理任何类型 是否忽略Null count: MYISAM 存储引擎下,COUNT( ) 的效率高 INNODB 存储引擎下,COUN

    2024年01月25日
    浏览(55)
  • 用mysql实现按条件分组并且每组去时间最大的一条

    可以考虑使用子查询或者连接查询实现。以下是两种语法: 其中,组内条件是按照哪个字段进行分组的条件,可以是一个或多个字段。时间是需求中要筛选的时间字段,假设为time字段。这个查询会返回满足组内条件下时间最大的记录。 其中,组内条件和时间的含义同上。这

    2024年02月16日
    浏览(51)
  • Django ORM 聚合查询和分组查询

    阅读文本前请参考此文章的数据表结构 对QuerySet计算统计值,需要使用 aggregate 方法,提供的参数可以是一个或多个聚合函数 Django提供了一系列的聚合函数,其中 Avg (平均值)、 Count (计数)、 Max (最大值)、 Min (最小值)、 Sum (加和)最为常用 要使用这些聚合函数,

    2024年02月01日
    浏览(60)
  • Oracle分组后拼接未分组字段、查询导入新表

    干货: listagg( 要拼接的字段名 , 分隔符 ) within group (order by 排序的字段名 ) 查询导入新表 dbms_random.string(‘x’,32) 随机生成32个字符串

    2024年02月16日
    浏览(59)
  • mysql单表查询,排序,分组查询,运算符

    查询插入的数据据 – 1. 查询出部门编号为30的所有员工 – 2. 所有销售员的姓名、编号和部门编号。 – 3. 找出奖金高于工资的员工。 – 4. 找出奖金高于工资60%的员工。 – 5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。 – 6. 找出部门编号为10中

    2024年02月13日
    浏览(40)
  • ES时间分组统计查询

    查询结果: 以上对应的Java代码 更多内容课参考: https://www.cnblogs.com/xiaoyh/p/16264715.html

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包