现在的位置: 首页 > 综合 > 正文

表查询与聚合函数

2018年06月09日 ⁄ 综合 ⁄ 共 1303字 ⁄ 字号 评论关闭

今天用到多表查询和聚合函数,查看资料并整合如下:

一,多表查询
1,多表查询:根据特定的链接条件从不同的表中获取所需数据!
2,查询语法:select t1,column,t2.column from table1 t1,table2 t2 where t1.column3=t2.column1; 
3,多表链接类型:内连接和外连接,其中外连接包括:左外连接,右外连接和全链接;
    语法分别用:inner join, left join, right join,full join
二,聚合函数
使用聚合函数sum,min,max,avg,count的同时如果还要查询表中的列,那么久必须使用group by 分组查询语句,group by要包含在select 和from之间除了聚合函数以外所有的列!例如:
select student.name,sum(student.score),student.age from student group by student.name;
上面的写法是不对的,group by 要包含除了聚合函数以外的所有列,下面的写法是正确的,否则报ORA-00397:不是单组分组函数
select student.name,sum(student.score),student.age from student group by student.name,student.age;
三,union all用法
join 是两张表做交连后里面条件相同的部分记录产生一个记录集,
union 和 union all操作符用于合并两个或多个 SELECT 语句的结果集,

Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All,对两个结果集进行并集操作,包括重复行,不进行排序;

注意:要操作的结果集的列的数量和类型一定要一样!例子:
select t1.column1,t1.column2,t1.column3 from table t1 union all select t2.column1,t2.column2,t3.column3 from table t2;
其中列数一致,都是3个列,其次t1.column和t2.column的类型要一致,t1.column2和t2.column2的类型要一致,t1.column3和t3.column3的类型要一致!
四,nvl控制转换函数
1,nvl(表达式1,表达式2):如果表达式1非空,则返回表达式1;表达式1为空,则返回表达式2.

2,nvl(表达式1,表达式2,表达式3):表达式1非空,则返回表达式2;表达式1为空,则返回表达式3.

五,case when使用
语法:case 表达式1 when 表达式2 then 表达式3 else 表达式4 end;当表达式1等于表达式2的时候返回表达式3,否则返回表达式4;
例子:我这里有一个boolean(是否计算)类型对应的字段IS_CALC和另一个int(总和)类型对应的字段TOTAL_SUM,
select sum(case is_calc when 1 then total_sum else 0 end) from table ;//当是否计算为true是,返回total_sum,否则返回结果集为0

【上篇】
【下篇】

抱歉!评论已关闭.