# 外键和另一张表的主键关联,不能创建对应表中不存在的外键
# 写法顺序:select--from--where--group by--having--order by
# 执行顺序:from--where--group by--having--select--order by
# select要放后面,如果有order by,则order by放最后,因为order by 是对结果进行排序
# 空字符串结果为0,空值NUll不显示
# 窗口函数
over()窗口函数的语法结构 及常与over()一起使用的分析函数
- over()窗口函数的语法结构
- 常与over()一起使用的分析函数
1、over()窗口函数的语法结构
over()函数中包括三个函数:分区partition by 列名、排序order by 列名、指定窗口范围rows between 开始位置 and 结束位置(可用\可以不用)
若over()函数中不使用这三个函数,窗口大小是针对查询产生的所有数据,如果指定了分区,窗口大小是针对每个分区的数据
# partition by
partition by可理解为group by 分组。over(partition by 列名)搭配分析函数时,分析函数按照每一组每一组的数据进行计算的。
B rows between 开始位置 and 结束位置
是指定窗口范围,比如第一行到当前行。而这个范围是随着数据变化的。over(rows between 开始位置 and 结束位置)搭配分析函数时,分析函数按照这个范围进行计算的。
2 常与over()一起使用的分析函数:
2.1 聚合类
avg()、sum()、max()、min()
2.2 排名类
rank() 按照值排序时产生一个自增编号,值相等时会重复,会产生空位(如:1、3、3、6、9)
dense_rank() 按照值排序时产生一个自增编号,值相等时会重复,不会产生空位(如:1、2、2、3、3、4)
row_number() 按照值排序时产生一个自增编号,不会重复(如:1、2、3、4、5、6)