1、value
value(val1,val2) 当第一个参数为null时,返回第二个参数的值;如果第一参数非空,则直接返回第一个参数的值。
2、grouping sets分组集
grouping sets 是group by 的进一步扩展,可以定义多个数据分组,让聚合更容易
group by grouping sets(name,())这个语句就是定义了2个数据分组,第一个数据以name作为依据,第二数据相当于不使用group by,也就是把所有数据当做一组。
3、with
with语句是用查询(select语句)来定义临时集合,格式
with 结果名(字段名) as(select 字段名 from ...)
select * from 结果名
在with语句中,前后两个字段名是一致的
例,多次递归查询
4、where 1=1 的作用
在SQL语句中加入where 1=1的目的,就是让where 的条件为永真,得到的结果就是未加约束条件的
1=1 永真 1<>1 永假
在多个不确实能够约束条件的情况下,使用where 1=1 可以很好的简化对条件的检测,如果有这个条件则使用or 或 and 加上这个条件,如果没有则不加,无需判断SQL语句中是否包含where
1<>1可以用于只取表结构不取表数据
create table tablename as select * from tableA where 1<>1 复制表结构
create table tablename as select * from tableA where 1=1 拷贝表
5、date函数
current date 当前日期2018-12-05
current time 当前时间 16:21:26
current timestamp 当前时间戳 2018-12-05-16.21.32.427788
date(current timestamp) 2018-12-05 时间戳转日期
Time(current timestamp) 16:21:32 时间戳转时间
decimal(current date) 20181205 日期转字符串
6、where 后 case when
select * from branch where (1=(case when @branch='D' then 1 else 0 end ) or branch=@branch) and 其他条件
当参数branch=‘D’选择所有的branch,即不对branch进行选择操作,当@branch不等于‘D’时,选择branch=@branch的数据
7、select branch,money,money/(select sum(money) from branch) from branch
可以在select字段中,继续添加select字段选择所有费用相加,从而可以计算出按branch的费用占比
8、union
使用union 可以将两个select的结果集合并为一个结果集,这两个select结果集中字段的类型要一致,字段数量要相同