常规的都数据库增删改查使用频率很高,对查询的使用上,有一些不常用但很有效的函数方法,可以进行记录总结一下。
一:以元组为单位
1.UNION
获取的记录在几张表中记录加法并集∪,会去除重复记录。
可以使用任何select 语句,但order by 字句 只能在最后使用。
UNION ALL 包含重复项
2.INTERSECT: 选取表中公共部分
应用于两张表,选取其交集的共有记录。
INTERSECT ALL 保留重复行
3.EXCEPT:记录的减法
应用于两张表A EXCEPT B
二:联结,以列为单位
INNER JOIN ,OUTER JOIN
LEFT JOIN ,RIGHT JOIN
相比于join ,要减少使用过时语法:where A.ITEM=B.ITEM AND ...
原因:1.使用这样过时的语法,无法马上判断到底是内连接还是外连接
2.联结条件与过滤条件写在一起,不易判断
三:高级处理 窗口函数
PARTITION
SELECT
<窗口函数eg:SUM ,AVG,RANK,DENSE_RANK,ROW_NUMBER> OVER (PARTITION BY 列
ORDER BY 排序列)
AS 属性名
FROM 表名
GROUPING 运算符:
同时得出小计和合计
包含三种: ROLLUP /CUBE/GROUPING SETS
例子:
FROM 表 GROUP BY ROLLUP(聚合列名)
GROUPING 用来判断超级分组记录的NULL的特定函数,可区分超级分组记录中的NULL和原始数据本身的NULL,NULL时返回1 ,否则返回0
CASE WHEN GROUPING(列)=1 THEN ...END
CAST(regist_date AS varchar(16)) 类型转换函数
CUBE:将GROUP BY子句中聚合键的所有可能的组合汇总结果集中到一个里,
GROUPING SET:可用于从ROLLUP 或CUBE的结果中取出部分记录,属于抽取出CUBE 的部分结果。