2021-09-23

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

SQL小知识知识



前言
SQL中每个函数的易错点、易忘点


一、创建表使用Union

数据
id:0 factor_code: 0 white_type:0 white_value:'粤JEW40' white_desc:'单车牌号' is_valid:1
id:1 factor_code: 0 white_type:0 white_value:'粤JYW40' white_desc:'单车牌号' is_valid:1

create table ser_audit.audit_white_record 
as select * 
from (select 0 id,0 factor_code,0 white_type,'粤JEW40' white_value,'单车牌号' white_desc,1 is_valid 
union all select 
1 id,0 factor_code,0 white_type,'粤JYW40' white_value,'单车牌号' white_desc,1 is_valid)t

其中ser_audit为数据库名 。


二、count

代码如下(示例):

SELECT COUNT(*)  -- *:参数,这里代表全部列
FROM dbo.Shohin;

注:1.计算NULL以外的行数

2.除了COUNT,其他函数不能将*星号作为参数

3.COUNT 函数的结果根据参数的不同而不同。COUNT(*) 会得到包含 NULL 的数据行数,而 COUNT(<列名>) 会得到 NULL 之外的数据行数

4.所有的聚合函数,如果以列名为参数,会无视 NULL 值所在的行

5.MAX/MIN 函数几乎适用于所有数据类型的列。SUM/AVG 函数只适用于数值类型的列。

6.使用聚合函数删除重复值(关键字 DISTINCT)

代码如下(示例):

--示例1:计算去除重复数据后的数据行数
SELECT COUNT(DISTINCT shohin_bunrui)
FROM dbo.Shohin;

--示例2:先计算数据行数再删除重复数据的结果
SELECT DISTINCT COUNT(shohin_bunrui)
FROM dbo.Shohin;

7.在聚合函数的参数中使用 DISTINCT(示例1),可以删除重复数据。DISTINCT 不仅限于 COUNT 函数,所有的聚合函数都可以使用。

三. GROUP BY子句

1.GROUP BY 子句中指定的列称为“聚合键”或“分组列”。

2.聚合键中包含 NULL 时,在结果中也会以 NULL 行的形式表现出来。

--语法
--SELECT <列名1>, <列名2>, ...
--FROM <表名>
--WHERE <表达式>
--GROUP BY <列名1>, <列名2>, ...

3.这里是先根据 WHERE 子句指定的条件进行过滤,然后再进行聚合处理。

易错:在 GROUP BY 子句中写了列的别名,SELECT 子句是在 GROUP BY 子句之后执行。所以执行到 GROUP BY 子句时无法识别别名。GROUP BY 子句不能使用 SELECT 子句中定义的别名。

4.GROUP BY 子句结果的显示是无序的。如果想排序,请使用 ORDER BY 子句。

5.在 WHERE 子句中不能使用聚合函数,只有 SELECT 子句和 HAVING 子句(以及 ORDER BY 子句)中能够使用聚合函数。

四.HAVING子句

1.从通过商品种类进行聚合分组后的结果中,取出“包含数据的行数为 2 行”的数据

SELECT shohin_bunrui, COUNT(*)
FROM dbo.Shohin
GROUP BY shohin_bunrui
HAVING COUNT(*) = 2

2.HAVING子句构成的要素1:常数,2:聚合函数, 3:GROUP BY 子句中指定的列名(即聚合键)

 3.HAVING 与 WHERE

虽然结果一样,聚合键对应的条件应该写在 WHERE 子句中,不是 HAVING 子句中。

①WHERE 子句的执行速度比 HAVING 快。

②意义:WHERE 子句 = 指定行所对应的条件,HAVING 子句 = 指定组所对应的条件。

五.ORDER BY排序

1.升序(ASC)和降序(DESC)

注:ORDER BY 子句中排列顺序时会默认使用升序(ASC)进行排列。

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

3.在排序键中使用 SELECT 子句中的别名 

注:ORDER BY 子句可以使用 SELECT 子句中定义的别名,GROUP BY 子句不能使用别名。

4.ORDER BY 子句中使用聚合函数



总结

希望大家多多学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值