SQL基础学习3

对表进行聚合查询

聚合函数:通过SQL对数据进行某种操作或计算是需要使用的函数,常见的聚合函数(或称为合计函数)如下:

COUNT:计算表中的记录数(行数);

SUM:计算表中数值列的数据合计值;(只适用于数值类型)

AVG:计算表中数值列的数据平均值;(只适用于数值类型)

MAX:求出表中任意列中数据的最大值;(适用于所有数据类型)

MIN:求出表中任意列中数据的最小值;(适用于所有数据类型)

聚合函数会将NULL排除在外。

计算表中数据的行数:参数列不同计算结果也会发生变化

- -计算全部数据行数
SELECT COUNT(*)
FROM 表名;
解释:此语句的执行结果包含了空值的行。

注意:其它聚合函数都不能以星号作为参数。


--计算NULL之外的数据行数
SELECT COUNT(列名)
FROM 表名;
解释:此语句的执行结果为统计“列名”的行数,不包含该列名中的NULL;

计算合计值:

SELECT SUM(列名)
FROM 表名;
解释:求出“列名”所有非空值的和


计算平均值:

SELECT AVG(列名)
FROM 表名;
解释:计算“列名所有非空值的平均值”

若要计算包含NULL的平均值则:

计算最大值和最小值:

SELECT MAX(列名1),MIN(列名2)
FROM 表名;
解释:找出列名1的最大值,列名2的最小值


使用聚合函数删除重复值:

SELECT COUNT(DISTINCT 列名)
FROM 表名;
解释:删除重复的列名,再计算行数

注意:DISTINCT必须写在括号内,若写成  SELECT DISTINCT COUNT(列名)  则会变成先计算行数,再删除重复的列名

在上述五类聚合函数中都可以使用DISTINCT来删除对重复数据的处理。


对表进行分组
GROUP BY 子句:

--使用GROUP BY子句进行聚合的语法
SELECT 列名1,列名2,列名3, ...
FROM 表名
GROUP BY 列名1,列名2,列名3, ...;
解释:按照列名1、列名2、列名3对表中的数据进行分组。其中,GROUP BY子句中指定的列称为 聚合键分组列

注意:使用逗号分隔指定的多列;其书写位置一定要写在FROM语句之后。SQL子句的顺序不能改变,也不能互相替换。

聚合键中包含NULL的情况:NULL也会作为一组特定的数据表示

使用WHERE子句时GROUP BY的执行结果:

SELECT 列名1,列名2,列名3, ...
FROM 表名
WHERE
GROUP BY 列名1,列名2,列名3, ...;
解释:先根据WHERE子句指定的条件进行过滤,然后再进行聚合处理

子句的书写顺序:SELECT->FROM->WHERE->GROUP BY
子句的执行顺序:FROM->WHERE->GROUP BY->SELECT

与聚合函数和GROUP BY子句有关的注意要点:

1.不能把聚合键之外的列名写在SELECT子句之中(SELECT子句中只能包含常数、聚合函数、聚合键

2.GROUP BY子句中不能使用列别名

3.GROUP BY子句的结果是随机的、无序的

4.不能在WHERE子句中使用聚合函数(只有在SELECT、HAVING、GROUP BY子句中使用聚合函数)


为聚合结果指定条件

HAVING子句:对集合指定条件

--HAVING子句的语法
SELECT 列名1,列名2,列名3, ...
FROM 表名
GROUP BY 列名1,列名2,列名3, ...
HAVING 分组结果对应的条件;

子句的书写顺序:SELECT->FROM->WHERE->GROUP BY->HAVING

注意: HAVING子句必须写在GROUP BY子句之后;HAVING子句中能使用的3种要素为 常数、聚合函数、聚合键

相对于HAVING子句,更适合写在WHERE子句中的条件是:聚合键所对应的条件


对查询结果进行排序

ORDER BY子句:

SELECT 列名1,列名2,列名3, ...
FROM 表名
ORDER BY 排序基准列1,排序基准列2, ...;
子句的 书写 顺序: SELECT->FROM->WHERE->GROUP BY->HAVING->ORDER BY

子句的执行顺序FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY

指定升序或降序:

未指定ORDER BY子句中排序顺序时会默认使用升序进行排序(或在列名后使用关键字ASC),若要进行降序排列时在列名后使用DESC关键字。

SELECT 列名1,列名2,列名3, ...
FROM 表名
ORDER BY 排序基准列1 DESC;

指定多个排序键:可以同时使用 2个或2个以上的排序键

优先使用左侧的键,如果该列存在相同值的话,会接着参考右侧的键

NULL的顺序:排序键中包含NULL时,会在开头或末尾进行汇总

ORDER BY子句中可以使用SELECT子句中定义的别名

ORDER BY子句中可以使用SELECT子句未使用的列和聚合函数

ORDER BY子句中可以不要使用列编号




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值