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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL之聚集函数和数据分组 -> 正文阅读

[大数据]SQL之聚集函数和数据分组

现实需求中,我们经常需要返回的是找出某一列的最大值、最小值、平均值、总和、行数等。所以不需要返回每一行的实际数据,浪费资源。
SQL提供了以下五种聚集函数来实现统计信息的返回。
AVG()
MAX()
MIN()
COUNT()
SUM()
举例子:
select AVG(price) AS avg
from table;
AS表示别名,可以让返回的列名更直观。

COUNT主要用来返回行的数目。
如果是COUNT(*),则返回表中所有行的数目,不管有没有列是空值。
COUNT(column),则会忽略NULL值所在的行。

SUM聚集函数中还可以组合算术运算。
select SUM(price*num) AS total
from table;

2.分组数据
以上我们可以对所有数据进行匹配或对where子句指定的行进行匹配,但是,如果我们需要对某列进行分组,以每一组的形式返回数据怎么办呢,就需要用到group by ,having将数据分成多个逻辑组,对每个逻辑组进行聚集计算。
例如,我们想要知道每个学生选了几门课:
select name, COUNT(*) AS num_class
from table
GROUP BY name;
GROUP BY 子句命令数据库对每个名字(每个人)计算课程数目,而不是所有人。最后以名字为组返回结果。

having过滤分组
比如,我们需要从上面的分组中过滤掉选课数目少于5门的同学,则需要用到HAVING,为什么不能用where来过滤呢,因为这里的课程数目是基于分组的聚集值,而where是针对行的,不能完成任务。
比如:
select name, COUNT(*) AS num_class
from table
GROUP BY name
HAVING COUNT( * )>=5;

那么,是不是在GROUP BY中不能用where呢,并不是。有时候where和having都要用,where用于在数据分组前进行过滤,having在分组后进行过滤。比如,需要返回选了五门课以上且每门课成绩大于60的同学。
select name, COUNT(*) AS num_class
from table
where grade>60
GROUP BY name
HAVING COUNT( * )>5;
这里的成绩是针对每门课而言的,需要用where过滤,不包括在分组中,符合成绩的课程数量是针对分组而言的。

如果想要分组的结果按照某一列顺序排序,可以在最后加上ORDER BY grade ASC/DESC
ORDER BY一定是放在最后的。

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 6:49:48-

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