SQL基础学习3
来源:互联网 发布:公司网络维护 编辑:程序博客网 时间:2024/06/04 20:05
对表进行聚合查询
聚合函数:通过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 表名WHEREGROUP 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子句,更适合写在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子句中可以不要使用列编号
- SQL基础学习3
- SQL基础入门学习(3)
- SQL学习 之SQL基础
- 零基础学习sql(3)--- 约束
- PL/SQL基础学习
- sql基础学习
- sql 基础学习
- PL\SQL基础学习
- SQL学习基础笔记
- SQL学习基础
- sql基础学习
- SQL基础学习
- SQL学习语法基础
- sql基础学习
- 基础SQL语句学习
- SQL基础学习1
- SQL基础学习2
- SQL基础学习4
- Flume
- RBAC用户权限管理数据库设计
- PL/SQL Developer导入导出数据库
- Android适配的一点心得
- Android开发——使用RadioGroup及Fragment来实现底部Tab效果
- SQL基础学习3
- ZooKeeper集群安装与配置(ZooKeeper3.4.6)
- fragment添加style
- MFC 初步:写一个带窗口的Windows程序
- Vera++ 默认Rules文件功能解读
- 远程批量获取服务器启动时间
- django中执行py报错Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured
- LeetCode—109 Convert Sorted List to Binary Search Tree
- 记录一些不错的个人博客