数据璐SQL零基础入门教程学习第四天主知识点三:聚合函数、group by&having

部署运行你感兴趣的模型镜像

主知识点三:聚合函数、group by&having

【知识点引入】

我们先来认识最常见的聚合函数

有时候我们只是需要获取数据的汇总信息,比如说行数啊、平均值啊这种,并不需要吧所有数据都检索出来,只需要使用聚合函数即可

【函数说明】

AVG() 返回某列的均值

COUNT() 返回某列的行数

MAX() 返回某列的最大值

MIN() 返回某列的最小值

SUM() 返回某列的和

注意聚合函数都会忽略列中的NULL值,但是COUNT(*)也就是统计全部数据的行数时,不会忽略NULL值

我们再来认识两个子句group by 和having

【标准语法】

select 字段名1

from 表格名

[where 条件代码]

group by 字段名1

having 条件代码

【语法解释】

之前学到的筛选操作都是基于整个表去进行的,那如果想要依据某列中的不同类别(比如说不同品牌/不同性别等等)进行分类统计时,就要用到数据分组,在SQL中数据分组是使用GROUP BY子句建立

GROUP BY子句可以包含任意数量的列,因而可以对分组进行多重嵌套,如按照班级和性别进行分组的话,结果中班级A包含男生组和女生组,班级B也包含男生组和女生组

having 子句和where 子句一样用于条件筛选,两者的操作符一致,但不同的是where是在指定分组前对数据进行筛选过滤,而having可以对分组后的数据进行筛选过滤

注意写的子句的顺序不可颠倒,需要严格按照语法的顺序!

【例题讲解】

【聚合函数】

点击链接SUM and COUNT - SQLZOO

第三题

【题目】

要求查询的是所有大洲(continent)为非洲(Africa)的GDP总和

求和用聚合函数sum,对gdp求和就写select sum(GDP),可以写上别名gdp总和

从world表中查询,写from world

筛选表中大洲(continent)为非洲(Africa)的数据,写where continent = 'Africa'

【运行代码】

select sum(GDP) gdp总和

from world

where continent = 'Africa'

【运行结果】

注意只使用聚合函数不使用group by时是对整张表作聚合运算

此时select后只能写聚合函数不能添加其他字段名

第四题

【题目】

查询有多少个国家需要进行计数,这里使用count函数

【运行代码】

select count(name) 数量

from world

where area >= 1000000

【运行结果】

【group by数据分组】

点击链接SUM and COUNT - SQLZOO第六题

【题目】

查询每个大洲(continent)和大洲内的国家(name)数量

这题需要对数据按照大洲字段分组,我们写出代码group by continent

并对每组的数据进行计数聚合运算,最后显示每个大洲和大洲中的国家数量,写出代码select continent,count(name)

对代码进行组合

【运行代码】

select continent,count(name)

from world

group by continent

【运行结果】

group by 数据分组类似于excel中的数据透视表功能

需要注意的是使用group by时,select后的字段只能写group by中出现过的字段和聚合函数,否则就会出现错误

【having基于聚合运算结果进行筛选】

点击链接SUM and COUNT - SQLZOO第八题

【题目】

查询总人口数量至少为1亿(100000000)的大洲

题目要求对大洲人口数量进行筛选

首先要对数据进行分组写出代码group by continent

然后对分组后的数据进行筛选此时使用having

要对组内的数据人口数量(population)求和进行筛选,写出代码 having sum(population) >100000000

对代码按正确顺序组合

【运行代码】

select continent

from world

group by continent

having sum(population) >100000000

【运行结果】

【总结】

常用聚合函数

标准语法

select 字段名1

from 表格名

[where 条件代码]

group by 字段名1

having 条件代码

【练习题】

【1】SUM and COUNT - SQLZOO第五题

【题目】

计算Estonia, Latvia, Lithuania这几个国家的总人口数

 

  • 【正确答案】
    • select sum(population)
    • from world
    • where name in ('Estonia', 'Latvia', 'Lithuania')

【2】SUM and COUNT - SQLZOO第七题

查询每个大洲和该大洲里人口数超过1千万的国家的数量

 

【正确答案】

select

continent

,count(name) 'number of countries'

from world

where population >= 10000000

group by continent

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值