DQL分组查询

分组查询

image.png
image.png


分组查询过程

SQL执行顺序
from --> group by --> count(pid) --> select --> having --> order by --> limit
image.png
image.png


语法示例


WHERE子句:

从数据源中去掉不符合其搜索条件的数据


GROUP BY子句:

搜集数据行到各个组中,统计函数为各个组计算统计值,每个组输出一行结果

-- 求每个系的最高分
SELECT c_name,
    AVG(grade)
FROM score
GROUP BY c_name;

多字段分组
-- 多字段分组
SELECT stu_id,
    c_name,
    AVG(grade)
FROM score
GROUP BY c_name,
    stu_id;

HAVING分组筛选

分组之后,对统计结果进行筛选的话必须使用having,不能使用where
image.png

从分组计算结果中进行过滤,去掉不符合其组搜索条件的各组数据行

-- 分组查询
-- 注意:分组之后,select的后边只能写分组字段和聚合函数
-- 分组之后的条件筛选不能使用where,要使用having
SELECT 字段1,
    字段2,
    from 表名
group by 指定分组的字段名
having 分组条件;


-- HAVING 对之前分组的结构进行过滤
SELECT c_name,
    AVG(grade)
FROM score
GROUP BY c_name
HAVING AVG(grade) <= 90;

示例1:

image.png

-- 统计各个分类商品的个数,且只显示个数大于4的信息
SELECT category_id,
    count(pid) as cnt
from product
GROUP BY category_id
HAVING cnt > 4;

image.png


示例2: 分组筛选+limit

image.png

-- 统计各个分类商品的个数,且只显示个数大于4的信息,将查询结果分组
-- SQL执行顺序:
-- from --> group by --> count(pid)  --> select  --> having  --> order by --> limit 
SELECT category_id,
    count(pid) as cnt
from product
GROUP BY category_id
HAVING cnt > 4
ORDER BY cnt
LIMIT 1;

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值