IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> select 查询、统计 -> 正文阅读

[大数据]select 查询、统计

目录

简单查询

查询多列数据,并自定义列名

order by asc/desc

top n

distinct

where 条件查询

like 配合 % 关键字

not

学习子查询 in

not in?

聚合函数

count ?

max ? ? ?

min ? ? ?

sum ? ? ?

avg ? ? ? ?

统计汇总 : group by ?, ? having

多表查询

?对表使用别名,来简化代码

公用表达式 ?cte

即席查询(分页查询)

综合练习

查询Employees表中的所有信息

查询Employees表中姓名包含‘华’的所有员工信息

查询Employees表中的所有员工信息,包括员工所属的部门名称。

统计各部门人数,写出SQL语句。

显示人数最多的部门的员工信息


学习类容 :select 查询、统计

  • 简单查询

  • select后跟 * 代表的是所有列,查询表中的所有记录。并显示所有的列名。

例子:

select * from A

结果:

  • ?select 后想要查询多个列,多个列名之间用 , 分开。并会显示指定的列名。

例子:

select ID ,city ,heal from A  

结果:

  • 查询中掺杂表达式

例子:

select ID,city ,heal ,双倍的治愈人数=heal*2 from A -- 查询中掺杂表达式

结果:

  • 查询多列数据,并自定义列名

  • 查询多列数据,并自定义列名的几种方式

例子

select  id=ID  ,c=city  ,h=heal ,双倍的治愈人数=heal*2 from A --新列名=原始列名或表达式

select ID ID,city city,heal 双倍治愈人数 from A --原始列名或表达式  新列名

select ID as ID , city as 城市,heal as 治愈人数,heal *2 as 双倍治愈人数 from A --原始列名或表达式  as 新列名

结果:

?总结

  • 新列名=原始列名或表达式
  • 原始列名或表达式 ?新列名
  • 原始列名或表达式 ?as 新列名

  • order by asc/desc

  • asc 升序,desc 降序,默认排序为升序,所以asc关键字可以不写

例子:

select * from A order by ID asc --查询A表所有数据,并以ID列为升序进行排序 ,默认排序为升序,所以asc关键字可以不写
  • top n

  • top n 关键字查询符合条件的前n 条记录

例子

select top 10 * from A 
select top 4 ID as id ,city as 城市 from A order by ID asc 
  • distinct

  • distinct 关键字是筛选重复的值,用于返回唯一不同的值。注意的是 distinct 去重时,仅当所有列相同时才认为是重复值!!!!

例子:

-----distinct----distinct 关键字是筛选重复的值,用于返回唯一不同的值。----
select * from A where ID = 1
select distinct ID from A where  ID=1
select distinct ID from A 
select distinct top 4 ID from A 
select distinct top 4 ID , city from A

结果:

  • ?仅当所有列相同时才认为是重复值!!!!

例子:

select * from AA
select distinct id,phone  from AA --注意的是 distinct 去重时,仅当所有列相同时才认为是重复值!!!!

可以看看:

  • where 条件查询

  • 常见的搜索条件:< , <=,? =, >= , >, and ,or ,between

例子:

--   =  ---
select * from A where ID=1

--    >  ---
select * from A where ID > 144

--   >=  --
select * from A where ID >= 144
select distinct ID as id ,city as 城市 from A  where ID >= 144 order by ID desc

查看:

?--- < ?<= -----同上----


  • and ,or ,between?
  • 注意这里between是包含两端值的!!!

例子:

---- and -----
select * from move 
select * from move where avg_price > 40 and avg_people > 20
select * from move where avg_price > 40 and avg_people > 20 order by avg_people asc

----  or ----
select * from move where avg_people < 20 or avg_people > 45

--- between -----
select * from move where  avg_people between 20 and 30  --注意这里between是包含两端值的!!!

查询:

  • like 配合 % 关键字

  • like为模糊查询,% 为任意长度的任意字符串。

例子:

select * from move
select * from move where avg_people like '%30%'  --注意,%符号里有空格与没有空格是有区别的噢!!!
select * from move where avg_people like '%30%' or avg_people like  '%40%'   --or 的配合使用
select * from move where avg_people like '%30%' and  avg_people like  '%40%' 

运行其中一条:

  • ?如果数据表里有为null 或是1个长度为0的字符串(空字符串)

如图:

查询:

select * from S  where name=''   --1个长度为0的字符串(空字符串)
select * from S where sum is null  --为null

结果:

  • not

-------- not -------------- 
select * from S 

select * from S where name is not null 
select * from S where sum is not null   --is not null
select * from S where sum  not like '%1%' --not like '%%'

结果:

  • 学习子查询 in

例子

-----学习子查询 in --------
select * from A
select * from move
select * from A where ID in (select  ID from move ) 
select top 10 * from A where ID in (select  ID from move ) 
select distinct * from A where ID in (select   ID from move where ID <5 ) 

结果:

  • not in?

select distinct * from A where ID not in (select   ID from move where ID <5 ) 

结果:


  • 聚合函数

------------- 聚合函数--------
--常用的聚合函数:----
--count ? 统计数据记录的个数
--max ? ? ?获取最大值
--min ? ? ? ?获取最小值
--sum ? ? ? 求和
--avg ? ? ? ?求平均值
?

  • count ?

  • 统计数据记录的个数,注意count记录的是所有不为空的数据,

例子:

select count(*)   from A  ---注意count记录的是所有不为空的数据,
select count(city)  as 总记录  from A
select count(avg_people) from move where avg_price=30 
select count(distinct avg_people) from move where avg_price=30 --对于有重复的可以用 distinct 进行去重

结果:

  • max ? ? ?

  • 获取最大值
select max(EmployeeID) as 最大的员工ID号  from MM 
select * from MM where EmployeeID=(select max(EmployeeID) from MM) 

  • min ? ? ?

  • ?获取最小值
select min(EmployeeID) as 最小的员工ID号   from MM 
select * from MM where  EmployeeID=(select min(EmployeeID) from MM)

  • sum ? ? ?

  • 求和
select  sum(EmployeeID) from MM

  • avg ? ? ? ?

  • 求平均值
select avg(EmployeeID) from MM
  • 统计汇总 : group by ?, ? having

  • group by 的作用是:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。并且经常与聚合函数一起使用
  • group by:select指定的每一列都应该出现在group by中,除了对使用了聚合函数的某一列
  • having用于对聚合函数的筛选,可以与聚合函数一起使用。而where则不能与聚合函数一起使用。
select * from move 
select avg(EmployeeID) from MM group by EmployeeID
select name,avg(avg_people) from move group by name  
select  ID,avg(avg_people) from move group by ID having avg(avg_people) >25

运行其中一条语句:

?综合练习:

select ID ,name ,time,avg(avg_people) ,avg_price from move  --指定数据列
where avg_price > 40   --筛选不满足条件的数据行
group by ID ,name ,time, avg_price --对select指定的列进行分组
having avg(avg_people) > 20  ---对聚合函数进行筛选
order by avg_price asc  --以avg_price 进行排序

结果:

  • 多表查询

如图:3张表

  • ?对表使用别名,来简化代码

----对表使用别名,来简化代码----
select m.*,q.name from MM m , move q 
where m.EmployeeID=q.ID

?综合练习:

select distinct  a.city,f.name ,cum=sum(f.avg_price*20)  from A a,move f
where  a.ID = f.ID
group by  a.city,f.name

  • 公用表达式 ?cte

---公用表达式  cte  -----
with cte as 
(
	select name,avg_people=count(*) from move group by name
)
select * from cte where name = '长津湖'
  • 即席查询(分页查询)

select * from phone order by ID 
offset 10 rows   --相对于首行偏移10行,相当于从第11行开始
fetch next 5 rows only   -- 下一步仅 5行数据

结果:

?

  • 综合练习

  • 查询Employees表中的所有信息

select * from Employeess 

结果:

  • 查询Employees表中姓名包含‘华’的所有员工信息

select * from Employeess where Employeess.EmployeeName like '%华%' 

结果:

  • 查询Employees表中的所有员工信息,包括员工所属的部门名称。

  • 要求查询结果如下图:

?代码:

select Employeess.* ,Departments.DepartName 
from Employeess,Departments 
where Employeess.DepartID=Departments.DepartID

结果:

  • 统计各部门人数,写出SQL语句。

代码:

select Departments.DepartID,DepartName ,count(Employeess.DepartID)as 人数 from Departments,Employeess where Employeess.DepartID=Departments.DepartID  
group by Departments.DepartID,DepartName

结果:

  • 显示人数最多的部门的员工信息

  • 如果财务部人数最多,将显示结果如下图

?代码:子查询,因为这两个表中以DepartID为关联,注意的是:all后边跟的是子查询

以这里的 >=? 比较运算符为例,>=all 表示大于等于每一个值。换句话说,它表示大于等于最大值

--查询人数最多的部门的员工信息,DepartID,DepartName
select *from Departments 
where DepartID in
(
select DepartID from Employeess group by DepartID  
having count(*) >= ALL (select count(*) from Employeess   group by DepartID) --count(*)表所有列
 )  

结果:


?拜~~~~~~~~~~~~~

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:15:00  更:2022-04-06 23:19:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:52:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码