SQL问题
1、WHERE与HAVING区别:——都可过滤数据
1、执行顺序不同:汇总查询时,WHERE在GROUP BY前执行,HAVING在GROUP BY后执行。
2、过滤条件不同:HAVING中可使用聚合函数,WHERE中不可以使用聚合函数。且WHERE的条件可以在HAVING中,反之不成立。
3、使用情景不同:WHERE可以应用于增删改查,HAVING只能应用于查询。
2、IN和EXISTS的区别:——都可过滤数据
1、枚举过滤:IN适用于过滤的数值较少的情况;EXISTS适用于过滤的数值较多的情况。(IN不可超过1000个)
2、子查询过滤:子表数据量远少于主表,且主表有索引时适用IN;子表数据远大于主表,且子表有索引时适用于EXISTS。
3、ON和WHERE的区别:——都可做表连接条件
WHERE时临时表生成后,对数据的过滤;
ON时临时表生成的过程中,连接的条件。
4、UNION 和 UNION ALL的区别:——都可并表
1、去重&排序:UNION的表去重并排序;UNION ALL的表不去重不排序。
2、执行效率:UNION需去重排序,执行速度比UNION ALL慢
5、DISTINCT和GROUP BY的区别:——都可去重
1、执行效率:大表去重时,GROUP BY 的执行效率优于DISTINCT
2、执行结果:GROUP BY伴随数据汇总,DISTINCT无此操作。
6、COUNT(1)、COUNT(*)和COUNT(列)的区别?——都是统计行数
执行结果:COUNT(1)相当于增加值为1的列统计,计算空列;
COUNT(*)统计所有列,计算空列
COUNT(列)统计某列行数,跳过空列。
执行效率:COUNT(1)>COUNT(列)>COUNT(*)
7、JOIN和UNION区别:
1、JOIN是表间连接操作
2、UNION是对表集合的操作
8、主键和外键的区别:
1、主键:记录的唯一标识,不能重复,不能为空。
2、外键:与其表主键连接的字段,可以重复,可以为空。
9、排序函数和排名函数的区别:
1、排序函数指ORDER BY语句,对结果集进行排序
2、排名函数指 窗口函数的ROW_NUMBER、RANK、DENSE_RANK,对结果集中插入列排名。
10、窗口函数中排名函数的区别:(99,97,97,96 DESC)
1、DENSE_RANK():连续排名,值相同名次相同。1,2,2,3
2、ROW_NUMBER():不连续排名,值相同名次相同。1,2,2,4
3、RANK():连续排名,值相同名次按排列顺序不同。1,2,3,4
11、CHAR、VARCHAR2、LONG、CLOB区别:
1、CHAR:是固定长度字符串,最大2000字节,不足空格填充;
2、VARCHAR2:可变长度字符串,最大4000字节,随数据长度变化。
3、LONG:可变长度字符串,最大2G。
4、NCHAR、NVARCHAR2:国家Oracle字符集,与环境变量NLS指定的语言集密切相关,使用方法和CHAR、VARCHAR2相同。
5、CLOB:大文本类型,最大4G。
(注:CHAR存放:字母:1字节、GBK编码汉字:2字节、UTF-8编码汉字:3字节)
12、窗口函数和聚合函数区别:
窗口函数:不改变记录行数。
聚合函数:多条记录聚合为一行。可应用于窗口函数。
SQL分类?
DDL——定义语言:CREATE、ALTER、DROP、DECLARE
DML——管理语言:INSERT、DELETE、UPDATE、SELECT
DCL——控制语言:COMMIT、ROLLBACK、GRANT、REVOKE
高级查询运算词?
UNION [ALL]:并[不去重]
EXCEPT [ALL]:差[不去重]
INTERSECT [ALL]:交[不去重]
怎样对数据去重?
1、DISTINCT去重
2、GROUP BY去重
表的连接方式有几种?
1、LEFT [OUTER] JOIN :左联(A-(A∩B))
2、RIGHT [OUTER] JOIN :右连(B-(A∩B))
3、[INNER] JOIN :内连接(A∩B)
4、CROSS JOIN :笛卡尔连接(AXB)
5、FULL JOIN :全表连接(A∪B)
行专列方式?
1、CASE WHEN+聚合函数:
2、PIVOT函数:
列转行方式?
1、UNION
2、UNPIVOT函数
3、LISTAGG函数
条件分组计数?
CASE WHEN
SQL语句书写顺序?
1、SELECT :选取列
2、DISTINCT:去重
3、FROM:选取表
4、JOIN:连接表
5、ON:连接条件
6、WHERE:过滤条件
7、GROUP BY :分组
8、HAVING:分组后过滤条件
9、ORDER BY:结果排序
10、LIMIT/OFFSET:分页查询
SQL语句执行顺序?
1、FROM:选取基础表
2、JOIN:对基础表与JOIN后表连接计算笛卡尔积,生成中间表T1
3、ON:连接条件应用于T1表每行,返回中间表T2
(4、OUTER JOIN:将主表被过滤数据添加至T2,返回中间表T3)
4、WHERE:过滤条件,对T3进行过滤,得到中间表T4
5、GROUP BY :分组,对T4分组,每组返回一行,得到中间表T5
6、HAVING:分组后过滤条件,对分组后结果T5进行过滤,得到中间表T6
7、SELECT :选取列,选择需求列,得到中间表T8
8、DISTINCT:去重,对列去重,得到中间表T9,可用GROUP BY代替
(8、窗口函数)
9、ORDER BY:结果排序,对T9进行排序,生成中间表T10
10、LIMIT/OFFSET:分页查询,返回最结果给用户。
如何搭建指标体系?
1、指标体系=指标+维度。(例如:指标:销售额;维度:品类、用户画像)
指标:业务单元拆分后基于统计方法进行量化的度量标准。
维度:指标的不同维度构成的体系价值。
2、指标体系OSM模型:
Object(目标):运营战略目标;
Strategy(策略):拆解目标制定策略;
Measurement(度量):指标度量策略。(DAU、ROI、CVR、CTR、PV、UV)
3、案例:GMV=消费者数*[深]转化率*客单价。
目标:提升GMV;
策略:推广部:推广产品,扩大消费者规模;运营部:制定新用户优惠,推进消费转化率;商品部:商品策略,制定多商品满减优惠,提高客单价。
度量:指标库分析策略成果。
如何进行数据清洗?
1、熟悉字段价值用途:
业务背景,数据来源;
表间关系,确定主键;
表内结构,字段含义。
2、确定指标(口径)、维度、单位、限制:
维度:分组透视维度;
指标:指标计算公式,业务内涵;
单位:度量单位;
限制:指标有意义的统计范围;
3、清洗数据:唯一性、完整性、合法性。(一般视业务内涵而定)
唯一:处理重复值;
完整:处理缺失值;
合法:处理异常值。
4、清洗案例:
重复:数据源异常重复、数据转化时连接重复。SQL优化
缺失:NULL缺失。特殊处理NVL\NULLIF\IFNULL
异常:过滤
OLAP函数(窗口函数)注意事项:
1、对窗口函数作为条件,需要外套一层查询。
2、窗口函数,在FROM,JOIN,WHERE,GROUPBY,HAVING后执行
1、SVM原理?
2、特征工程怎么做?
3、什么是将显著性水平、置信区间、假设检验?
4、三个范式是什么?优缺点?
1NF:原子性约束。数据不可分割。
2NF:唯一性约束。数据具有唯一标识。
3NF:冗余性约束。任何字段不可由其他字段派生出来。
优点:减少数据冗余,更新快,体积小。
缺点:查询需要多表连接,难以进行索引优化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)