数据分析 SQL 第六课 having&SQL运行逻辑

一、含义:

having表达式 限定分组聚合后的查询行必须满足的条件,是对group by 分组后的数据进行筛选。

二、语法:

select 字段 from 表格 where 表达式 group by 字段 having 表达式 order by 字段 asc/desc limit 偏移量,行数

注:having 表达式放在group by 之后,order by之前。

三、具体用法:

having+聚合函数(字段) 运算符号 具体数值:放在group by之后,是对group by 分组后的数据进行筛选

例子:在world表格中,查询总人口数至少大于1亿的大洲

select continent from world group by continent 
having sum(population)>=100000000

注意:having子句不能脱离group by 单独使用

四、having与where的区别

1、having的表达式与where的表达式基本相同,但是having的表达式可以使用聚合函数,where不可以,因为where是对原表数据进行筛选。

2、对行数据进行筛选时用where,对含有聚合函数的筛选用having

五、SQL运行逻辑:

1、语句的运行顺序:

from—where—group by—having—order by—limit—select

2、运行原理:

a.执行from语句是从数据库中调取复制一份表格;

b.执行where语句是在复制的表格中筛选出符合条件的数据行

c.执行group by语句是依据指定的字段对筛选后的数据进行去重分组,相当于excel建立了一个数据透视表,添加了行标签

d.执行having语句是对分组后的数据,进行满足特定条件的筛选;

e.执行order by语句是对筛选后的数据进行排序;

f.执行limit语句是对排序后的数据限制显示的行;

g.执行select语句是提取最后要显示的字段,或在group by确定的字段后添加新的聚合运算字段。

综合例题:查询总人口至少为3亿的大洲和其平均gdp,其中只有gdp高于200亿且人口数大于6000万或者gdp低于80亿且首都中含有三个a的国家计入计算,最后按照国家数从大到小排序,只显示第一行。

select continent,avg(gdp) from world 
where (gdp>20000000000 and population>60000000) or (gdp<8000000000 and capital like'%a%a%a%')
group by continent having sum(population)>=300000000
order by count(name) desc limit 1

           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值