<日常练习,持续更新>
*练习题:8、9、10、11 (3月25日 做完50题)
聚合函数、子查询、窗口函数、文本处理、 数字处理、日期处理、查询优化、数据关联后重复杂糅
先关注 要查询的表集合,再关注筛选字段和筛选条件。
1、关于联接:
Inner join = join
没有语法上的out join,left join 和right join都是out join
select * from a,b是笛卡尔乘积
2、关于子查询:
In 和 not in
exists
关联子查询是子查询使用到了主查询的相关数据
3、关于聚合函数:
只为了得到一个汇总值(分组group by , 筛选 having
+聚合函数统计),而不是要把每个数字都给检索出来,
4、关于日期函数
timestampdiff
(unit,datetime_expr1,datetime_expr2):可用来计算年龄
month():从 指定日期 中寻找月份
Year():从指定日期中寻找年份
5、关于窗口函数:
因为group by一列只有一个类别,partition by不会改变表中数据的类别
avg
(
score
)
over
(
partition
by
sid
)- 聚合函数()over(partition by )
select *,
rank() over (partition by 班级
order by 成绩 desc) as ranking
from 班级表
按班级分组,按成绩排名
1) 专用窗口函数,如rank, dense_rank, row_number等专用窗口函数。
2) 聚合函数,如sum. avg, count, max, min等
窗口函数是对where或者group by子句处理后的结果进行操作,所以
窗口函数原则上只能写在select子句中
。
排名问题、
累积问题、
复购问题、