栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

蓬莱小课:SQL常见的三种错误指南

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓬莱小课:SQL常见的三种错误指南

SQL上手比较简单,但是,不要被它简单外表迷惑了,如果我们问自己:多少次我尝试从大数据中抓取数据,但是获得了不完整或者错误的数据?答案是:太多次了,连自己都数不清!


今天,我们就来梳理下常见的SQL错误,可以归为三大类:

  • 语法类

  • 函数类

  • 逻辑类

语法错误

1、标点错漏

逗号多或缺,括号等不成对,漏写引号、多余的空格等;

case when … end函数,有时候少写end;

select    col1,    col2,    col3,from  table

select含有 聚合函数(count, sum, avg)时,相应字段都要放入group by 后面。

2、重命名

如果有子查询,那么需要对子查询进行重命名

表的重命名不要搞混

3、数据拼接

union all时要求字段的名称和顺序都要保持一致;

join操作要求两边的字段格式一致;

join关联的时候注意是1对1映射还是1对多映射,小心出现笛卡尔积的情况。

4、拼写错误

表名、数据库名、字段名拼写错误。

Table 'XXX' doesn't existUnknown column 'XX' in 'field list'。

如果遇到这个报错时,去检查XXX拼写是否写正确,然后再去检查数据库中是否有这张表。

函数错误

1、参数数量

substring(str, pos) substring(str, pos, length)

例如:上方 substring 函数需要两个参数,仅输入一个。

2、参数格式

select to_date('20210325') 返回值为null,因为数据格式不是日期时间where order_time between '2021-03-01' and '2021-03-15'

使用between and时还要注意字段和条件的颗粒度匹配。

判断条件给到的格式是日期,而字段是日期时间格式,2021-03-15对应的日期时间格式是2021-03-15 00:00:00,那么实际上3月15号0点后的数据实际是没有被选中的,对于这种情况,可以将原有的日期时间字段用to_date或者substr处理一下。

3、函数用法

例如:between......and,注意最小值在前,最大值在后,是包含边界的;

例如:函数datediff中第1个参数是起始日期(通常是较小值),第2个参数是结束日期,如下:

select datediff(''d'','2021-01-01','2021-01-02')返回的是1;select datediff(''d'','2021-01-02','2021-01-01')返回的是-1;

逻辑错误

1、数据重复

对于存在一对多关系的数据表关联后会产生数据重复,这种重复对于sum/avg等非去重的统计计算操作有影响,对count(distinct *)等去重计数操作没影响。

例如:一张母订单可以对应多张子订单;

例如:一个用户可以对应多条交易记录。

2、无效筛选

下方案例实际上b.tag='1' 这个筛选条件已经带有b.tag is not null 的“隐藏前提”了,所以这里用left join 和 join的效果是一样的。

selecta.col1,b.col2from aleft join b on(a.id = b.id)where b.tag = '1'

涉及到转化率的时候,表的顺序和转化率的顺序是一致的,且不能在where子句中添加后续流程的筛选条件,不然“隐藏前提”会过滤掉一部分数据而导致结果有误。

3、标签重叠

建立标签的时候要符合MECE原则(相互独立,完全穷尽);

一般来说建立标签的时候使用简单的逻辑,每个维度单独成列(基础标签);

例如:性别区分:男、女、未知;

编写SQL进行分组统计时,不建议使用“复合逻辑”标签,复合标签不仅逻辑上容易出错(标签重叠),维护成本也更高。

例如:一个用户在某一时刻,可能有多张优惠券,优惠券的状态可能是【已使用、已过期、未使用】等,现在要判断当前有“未使用”的优惠券。

4、时间错位

即数据匹配时要在时间维度上要对齐。

例如:T+1的用户标签匹配时,昨日的标签匹配今日的交易情况。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号