一个我写的实例:其中多表连接,一共连接了3个表。使用聚集函数SUM,用到了GROUP BY

SELECT a.[UserID],b.[Name],sum (c.[Money]+c.[Bank])as TotalMoney
FROM Table1 a(nolock)
 LEFT JOIN Table2 b(nolock) on a.[UserID] = b.[UserID] 
LEFT JOIN Table3 c(nolock) ON b.[UserID]=c.[UserID] 

WHERE  a.[UserID] = b.[UserID] and a.[UserID] = c.[UserID] and a.[Time] >= '2005-01-01' AND a.[Time] <= '2006-12-31' 

GROUP BY a.[UserID],b.[Name]

ORDER BY a.[Time] DESC 

优化一下

SELECT a.[UserID],b.[Name],sum (c.[Money]+c.[Bank])as TotalMoney
FROM Table1 a(nolock)
LEFT JOIN Table3 c(nolock) ON a.[UserID]=c.[UserID],  Table2 b(nolock) 

WHERE  a.[UserID] = b.[UserID] and a.[Time] >= '2005-01-01' AND a.[Time] <= '2006-12-31' 

GROUP BY a.[UserID],b.[Name]

ORDER BY a.[Time] DESC 

================================================================================
Left Join 语法:

select   *   from
table1   left   join   table2   on   条件1   
left   join   table3   on   条件2   
left   join   table4   on   条件3  
where   条件4

GROUP BY 说明:

group by 

    在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

   在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数

   select max(sal),job emp group by job;
   (注意max(sal),job的job并非一定要出现,但有意义)

   查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。

  select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

  当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件
 
  where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
  having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

  查询每个部门的每种职位的雇员数
  select deptno,job,count(*) from emp group by deptno,job;

多表数据连接 Left join的更多相关文章

  1. sql 表的连接 inner join、full join、left join、right join、natural join

    一.内连接-inner jion : SELECT * FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2 INN ...

  2. 数据连接命令join

    join主要用来将两个相关联的文件连接起来.两个文件相关联的意思是指这两个文件中有一些字段是关联的,例如两个文件的第1个字段都是学号,且每个学生的学号是唯一的.像这种具有唯一性关联的文件,就可以使用j ...

  3. 数据库表的连接(Left join , Right Join, Inner Join)用法详解

    转自:http://blog.csdn.net/jetjetlinuxsystem/article/details/6663218 Left Join, Inner Join 的相关内容,非常实用,对 ...

  4. SQL的表的连接Left Join / Right Join /inner join相关

    Left Join / Right Join /inner join相关关于左连接和右连接总结性的一句话:左连接where只影向右表,右连接where只影响左表.Left Joinselect * f ...

  5. sql 双表或多表的连接查询 join

    使用 inner join,left join, right join.full join 对双表进行联合查询. 1.inner join.join:如果表中有至少一个匹配,则返回行. 2.left ...

  6. 【Hive】Hive笔记:Hive调优总结——数据倾斜,join表连接优化

    数据倾斜即为数据在节点上分布不均,是常见的优化过程中常见的需要解决的问题.常见的Hive调优的方法:列剪裁.Map Join操作. Group By操作.合并小文件. 一.表现 1.任务进度长度为99 ...

  7. Oracle 表的连接方式(2)-----HASH JOIN的基本机制2

    Hash算法原理 对于什么是Hash算法原理?这个问题有点难度,不是很好说清楚,来做一个比喻吧:我们有很多的小猪,每个的体重都不一样,假设体重分布比较平均(我们考虑到公斤级别),我们按照体重来分,划分 ...

  8. sql表连接left join,right join,inner join三者之间的区别

    sql表连接left join,right join,inner join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (以左表数据为基准,不足补为NULL) ...

  9. SQL学习_查询重复数据和连接多个表数据的方法

    进行数据库测试时需要根据不同场景查询数据,以便验证发现的问题是否为脏数据引起的.记录一下最近常用的查询方法: 1. 查询表中重复数据(id不同,多个字段值相同) select P1.* from pr ...

随机推荐

  1. 移动web中一些问题处理与事件说明

    1.1.1 所有盒子以边框开始计算 /*设置宽度以边框开始计算*/-webkit-box-sizing: border-box;box-sizing: border-box; 在移动端通常使用的是百分 ...

  2. HDU2544 最短路dij

    纯最短路. ///HDU 2544堆优化的最短路 #include <cstdio> #include <iostream> #include <sstream> ...

  3. Linux内核分析——分析system_call中断处理过程

    万子惠 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 我选择的是get ...

  4. Ashx的处理实例(逻辑处理/js调用)

    做asp.net开发的对.aspx,.ascx和.ashx都不会陌生.关于它们,网上有很多文章介绍.“纸上得来终觉浅,绝知此事要躬行”,下面自己总结一下做个笔记.1..aspxWeb窗体设计页面.We ...

  5. NOPI Excel插件导入导出 图片批注

    dateTable导出到excel的MemoryStream /// <summary> /// DataTable导出到Excel的MemoryStream Export() /// & ...

  6. Python 程序员经常犯的 10 个错误

    关于PythonPython是一种解释性.面向对象并具有动态语义的高级程序语言.它内建了高级的数据结构,结合了动态类型和动态绑定的优点,这使得... 关于Python Python是一种解释性.面向对 ...

  7. Oracle_12c_RAC_service_died问题分析处理

    接上篇,通过分析listener日志发现rac1数据库无法连接时出现了listener_20160628.log:28-JUN-2016 07:55:47 * service_died * LsnrA ...

  8. Core Data浅谈初级入门

    Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象.在此数 ...

  9. 输入输出流(IO)

    输入输出流(IO)文件(File)java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录.File类只用于表示文件(目录)的信息(名称.大小等), ...

  10. Visual Studio 创建C++或C#Windows程序

    使用工具Visual Studio,创建一个C++或C#Windows程序,在主窗口中显示“Hello World”,用户可以用鼠标拖动“Hello World”在主窗口中移动 首先创建一个项目​ 选 ...