SQL语句笔记

书写顺序: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 结果表达式2WHEN 简单表达式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值的最大值/最小值,同一分组内记录的返回值相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值