《SQL必知必会》:分组数据GROUP BY

SQL必知必会:了解SQL

SQL必知必会:检索数据 SELECT

SQL必知必会:排序检索 SELECT ORDER BY

SQL必知必会:过滤数据 SELECT WHERE

SQL必知必会:高级数据过滤 WHERE AND OR IN NOT

SQL必知必会:通配符过滤 LIKE

SQL必知必会:计算字段 + || concat 算术运算

SQL必知必会:数据处理函数 文本 日期 数值

SQL必知必会:汇总数据 AVG() COUNT() MAX() MIN() SUM()

SQL必知必会:分组数据GROUP BY

SQL必知必会:使用子查询

SQL必知必会:联结表 JOIN

SQL必知必会:高级联结 内联结 外联结 全联结

SQL必知必会:组合查询 UNION

SQL必知必会:插入数据 INSERT

SQL必知必会:更新和删除数据 UPDATE DELETE

SQL必知必会:创建和操纵表 CREATE ALTER DROP RENAME

SQL必知必会:使用视图 CREATE VIEW

1. 数据分组

-- 只能返回1001提供的产品数目
SELECT
	COUNT( * ) AS num_prods 
FROM
	Products 
WHERE
	vend_id = '1001';

在这里插入图片描述

如果要返回每个供应商提供的产品数目,该怎么办?

2. 创建分组

-- 以vend_id分组
SELECT
	vend_id,
	COUNT( * ) AS num_prods 
FROM
	Products 
GROUP BY
	vend_id;

在这里插入图片描述

3. 过滤分组

WHERE过滤行,而HAVING 过滤分组。

说明:HAVING 和WHERE 的差别
这里有另一种理解方法,WHERE 在数据分组前进行过滤,HAVING 在数据分组后进行过滤。这是一个重要的区别,WHERE 排除的行不包括在分组中。这可能会改变计算值,从而影响HAVING 子句中基于这些值过滤掉的分组。

-- 列出具有两个以上产品且其价格大于等于4 的供应商:
SELECT
	vend_id,
	COUNT( * ) AS num_prods 
FROM
	Products 
WHERE
	prod_price >= 4 
GROUP BY
	vend_id 
HAVING
	COUNT( * ) >= 2;

在这里插入图片描述

-- 去掉where
SELECT
	vend_id,
	COUNT( * ) AS num_prods 
FROM
	Products 
GROUP BY
	vend_id 
HAVING
	COUNT( * ) >= 2;

在这里插入图片描述

说明:使用HAVING 和WHERE
HAVING 与WHERE 非常类似,如果不指定GROUP BY,则大多数DBMS
会同等对待它们。不过,你自己要能区分这一点。使用HAVING 时应
该结合GROUP BY 子句,而WHERE 子句用于标准的行级过滤。

4.分组和排序

在这里插入图片描述

-- 按订购物品的数目排序输出
SELECT
	order_num,
	COUNT( * ) AS items 
FROM
	OrderItems 
GROUP BY
	order_num 
HAVING
	COUNT( * ) >= 3;

在这里插入图片描述

4. SELECT子句顺序

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

超级D洋葱

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值