此文章只是本人觉得一些比较有用的知识点,大神勿喷,有错误请多多指教。
判断空值
is not null时,空格会被判断成非空
<>’'时,空格会被判断成空值
转化类型
cast(a.phone as int) 将phone列转化为int类型
类似if的函数
case when 类似if
格式有:case col when …/case when col…
窗口函数over()
求累积的时候不仅可以实现上述的按月累积,也可实现限定的按前/后/前后几个月累积,毕竟有时候有些需求是从头到尾累积,而有的是要求前后共三个月的累积,使用方法就是在order by子句后使用用来指定范围的关键字following和preceding
排序的区别:
- ROW_NUMBER()
返回结果集分区内行的序列号,每个分区的第一行从1开始,唯一值 - RANK()
RANK函数为相同的值生成相同的序号 - DENSE_RANK()
返回结果集分区中行的排名,在排名中没有任何间断。行的排名等于所讨论行之前的所有排名数加一
数据透视表
select col1,count(case when 条件1 then 1 end),
count (case when 条件2 then 2 end)
from tab
模糊查询
#查询员工姓名以S开头
select * from tab where name like 'S%';
#查询员工姓名以N结尾
select * from tab where name like '%N';
#查询员工姓名包含L
select * from tab where name like '%L%';
#查询员工姓名第二个字母为L
select * from tab where name like '_L%';
防止后面有补充,所以写了个一