12.1..1 avg 函数
Avg :
12.2.2 count 函数
Count 函数进行解散,额可以李育馆的Count() 确定表中的行的数据
活符合条件的行的数目。
Count 函数有2中使用的方式:
- Q`11 count(*)对表中的行的书迷进行计算, 不管表中的是空值还是非空值。
- 对特定列的具有数值的行进行统计,忽略NULL数值。
Eg:
返回cusomter 表中的客户的总数值:
下面电子邮件的函数进行即说:![]()
12.1.3 MAX函数
Max 函数返回列中的最大数值,max要求制定对应的列名称,如下图所示:
Ma x函数忽略列的数值为null 的行的。
12.1.4 min函数
Min的函数和max 函数的功能相反,他返回制定列的最小的数值,与Max的数值一样,min需要制定对应的列名称。
如下图所示:
12.1.5 sum函数;
返回制定列数值的和和总计;
下面举一个例子,orderitems中包含实际的铲平,每个物品都有响应的数量,可如下检索订购物品的总数,
返回所有的物品数量只和,where 子句之包成是统计某个 物品订单的中的物品。
Sum 也可以用来合计计算数值,在下面的例子中,合计每项物品的item_price*quantit,得出的总的订单金额。
下面的例子中使用avg 函数返沪特定的供应商的平均价格,与上面的select 语句相同,但是是用了distinct 参数,因此平均的数值只考虑不同的价格。
组合聚集函数:
使用单挑select 语句
执行4个函数的数值返回对应的products物品的数目,产品价格的最高,最低以及平均水平的数值。
小结:
聚集函数用来汇总数据的,Mysql 支持一系列的聚集函数,可以使用不通的结果返回返回所需的结果,这些函数是高效的,他们的返回结果要比你自己在客户机上应用程序计算要快得多。
分组数据:
13.1 数据分组
到目前位置的所有的近似uanzai都是在表的所有的数据活匹配的特定的
Where 子句完成的,提示一下,下面的例子返回供应上的1003 提供的产品数目。
分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。
13.2 创建分组;
在具体使用Group by子句前,需要知道一些重要的规定。
Group by 子句可以包含任意数目的列,这是能对分组进行签到,为数据分组提供更细致的控制。
如果在group by 子句中嵌套了分组,数据将在。
如果分组列中具有NULL数值,则NULL将作为一个分组返回,如果有多个NULL数值,
她们将分为一组。
Group BY 子句必须能出现先在where 子句以后,order by子句之前。
13.3 过滤分组
除了能用GROUP分组数字局外,Mysql 还允许过滤分组,规定包含那些分组,排除那些分组,例如,可能想到列出只有有2个订单的所有客户。
为得出这些数据,必须基于完整的分组而不是个别的行进行过滤。
我们已经看到where 子句的作用,但是在这个例子中,where 子句不是起作用的,因为where子句过滤的是行,而不是分组,事实上,where子句没有分组这个概念。
那么不使用where子句那是用什么呢?Mysql 提供了另外的子句,那就是having 子句,having 非常类似于where,事实上,目前所学的过的所有类型的where子句都可以使用having子句来使用,唯一的区别是,where 过滤行,但是having过滤分组。
Having支持所有的where子句,
分析:
分组大于2,过滤订单count(*)>=2 两个以上的订单的那些分组。
还有一种理解方法:where 子句在分组前过滤,having子句在分组后过滤。
分析:
在这条语句中,第一行是使用聚集函数的基本的select ,他与前面的例子很想,where子句过滤所有prod_price 方法至少为10的行。然后按照vend_id 进行分组,having 子句过滤即说2或2以上的分组,
13.4 分组和排序
虽然Group by 和order by 经常完成相同的工作,但她们是不通的。表汇总了她们之间的区别。
Order by 和 group by.
| Order by | Group by |
| 排序产生的输出 | 分组行,但是输出可能不是分组的顺组 |
|
| 至可能寻则列或表达式列,而且必须使用每个选择表达式 |
表中的第一项差别几位重要,我们进场发现使用GROUP by 分组的数据分组的形式输出的,但是情况并不总是这样的,他并不是SQL规范要求这养的,此外,用户也可能会要求不同于分组的数序排序,仅仅因为一某种的分组数据,并不表示你需要按照相同的方式排除输出。 应该提供明确的order by 子句,即使效果的等同与group by 子句也是如此,
不要忘记的Group by ,一般在使用的Group by 子句中的也应该使用order by 子句,这是保证数据正确的排序的唯一方法,不要依赖group by 子句。
为说明Group by 和order by 的使用方法,请看一个例子,下面的select 语句类似于前面的例子,他检索与总计价格大于活等于50的订但单的好和总结和总计订单价格。
为按照总计单价价格排序输出,需要添加order by 子句,如下所示。
分析:
在这个inadequa子中,group by 子句用来订单号order_num列分组数据,以列出数据便sum(*)函数能够返回总计订单价格,havinvg子句过滤数据,使得至总计订单价格大于活等于50 的订单。最后用orderby 子句排序输出。
13.5 select 子句顺序
下面会与一下select 语句中子句的数序,理出起劲为止所学过的子句。
子句 说明 是否必须使用
Select 要返沪的列或表达式 是
From 从中检索数据的表 仅仅在从表数据选择中使用
Where 行级过滤
Group by 分组说明
Having 组级别过滤
Order by 输出数序
Limit 要检索的行数。
13.6 小结
在第12长中,我们学会使用了用SQL聚集的对数据进行会从,本章讲授了
如何使用group bu 子句对数据进行汇总这些计算,返回每个组的结果,
Having 组级别过滤。
14.使用子查询
迄今我们看到的都是单表查询, SQ还可以进行子查询。
列出订购物品的所有客户,应该怎么样检索呢?
- 检索包含物品TNT的所有订单的编号,
- 检索具有前一个步骤的列出的订单的编号的所有客户偶的ID
- 检索前一步返回的所有客户ID的客户信息。
虽然子查询一般与IN操作符结合使用,但是也可以使用到=等于 或不等于的方法。S
使用子查询的另一个方法是创建计算字段,加入需要 显示customers中表中
每个客户的订单总数,订单与响应的客户ID存储在orders表中。
为了执行这个操作:遵循下面的步骤:
- 从customters表中检索客户列表
- 对于检索的出的每个客户,统计在orders表中的的行进行统计。
这种子查询成为相关子查询。任何时候只要列明可能有多一性,就必须使用这种语法,
表明和和列明有一个句点分割。
14.4 小结
本章学习了什么是子查询以及如何使用他们呢,子查询最常见的使用是在where 子句中的IN操作符中,以及用来填充计算列。
本文深入探讨了SQL中的聚合函数如COUNT、SUM、AVG、MAX和MIN的使用,以及如何通过GROUP BY子句对数据进行分组,利用HAVING子句进行分组过滤。同时,介绍了子查询的应用,包括其在WHERE子句中的使用和作为计算字段的方法。
800

被折叠的 条评论
为什么被折叠?



