书写顺序:select-from-where-group by-having-order by-limit
基本组成
- from,后跟着原表
- where,表示在计算前对原表的记录进行筛选
- group by,用于分组
- 在from,where,group by语句都执行完后,才会开始执行select语句
- having只存在group by语句时才会使用having,主要用于对聚合函数计算后的字段进行筛选
- order by 用于排序
- limit,用于限制显示
多表查询
连接方式:join和union
-
join: 以字段为单位进行连接
-
union:以记录为单位进行连接
常见的join方式 -
inner join(内连接):只保留两个表中同时存在的记录。
-
left join(左连接):保留左表所有记录,无论其是否能够在右表中匹配到对应记录。若无匹配记录,则需要用NULL填补。
-
right join(右连接):保留右表所有记录,无论其是否能够在左表中匹配到对应记录。若无匹配记录,则需要用NULL填补。
-
full join(全连接):左右表记录都会保留,没有匹配的用NULL填补。
聚合函数
- COUNT( <列名>):统计表中元组个数;
- COUNT([DISTINCT] <列名>):统计本列列值个数
- SUM( <列名>):计算列值总和
- AVG( <列名> ):计算列值平均值
- MAX( <列名> ):求列值最大值
- MIN( <列名> ):求列值最小值
- stddev(<列名>):列值标准差
- variance(<列名>):列值得方差
DISTINCT:去重
case when:
CASE 测试表达式
WHEN 简单表达式1 THEN 结果表达式1
WHEN 简单表达式2 THEN 结果表达式2 …
WHEN 简单表达式n THEN 结果表达式n
[ ELSE 结果表达式n+1 ]
END
窗口函数
**基本结构:**函数名() over (partition by col 1,col 2 order by col3 desc/asc,col4 desc/asc)
- row_number() over():返回记录在同一分组内的排序
- percent_rank() over():返回记录在同一分组内的排序的分位数,为0~1
- sum(col) over():返回同一组内所有记录的col值的和,同一分组内记录的返回值相同
- avg(col) over():返回同一组内所有记录的col值的平均值,同一分组内记录的返回值相同
- max/min(col) over():返回同一组内所有记录的col值的最大值/最小值,同一分组内记录的返回值相同

被折叠的 条评论
为什么被折叠?



