Oracle 高级查询1 关联查询 分组查询

高级查询

1.关联查询
作用:可以跨越多表查询

--查询出员工的名字和他所在部门的的名字

语法:
select 列,列,列
from 表1 join 表2
on 表1外键=表2主键

2.外联接

左外联[left outer join]
以关联的左边为准,即使右边没有与之匹配的记录,则左边的记录也要
出现在结果集中,右边全部以NULL值显示。

右外联[right outer join]
以关联的右边为准,即使左边没有与之匹配的记录,则右边的记录也要
出现在结果集中,左边全部以NULL值显示。

3分组查询
定义:利用内置的分组函数来查询

所谓分组,就是看待数据的“角度”不同。
也就是把某类值相同的看做一组。

语法:
select 列名,组函数(列名)...from 表名
where 条件
group by 列
having 字句
order by 列

分组函数:
SUM([distinct] 列|表达式|值)        求和
AVG([distinct] 列|表达式|值)         求平均值
MAX(列|表达式|值)            求最大值
MIN(列|表达式|值)             求最小值
COUNT([distinct] 列|*)            求个数(包含null)

注意1:只有出现在group by 后面的列[用来做为分组条件的列],才有资格
写在SELECT的后面,除非使用组函数进行修饰。

注意2:having 和where 都是条件
区别:
WHERE 子句中是不能使用 组函数的,因为它在GROUP BY 之前。
但是,HAVING 子句中可以使用组函数,因为它在GROUP BY 之后。

时间: 2024-10-19 12:43:29

Oracle 高级查询1 关联查询 分组查询的相关文章

5 功能4:个人站点页面设计(ORM跨表与分组查询)

1.个人站点页面文章的查询 # 个人站点 http://www.cnblogs.com/wh1520577322/ http://www.cnblogs.com/liucong12345/ http://www.cnblogs.com/kin1492/ (1)用户未找到,404页面构建 url # 个人站点页面设计 re_path(r'^(?P<username>\w+)$', views.home_site, name='home_site'), view 404.html <!DOC

BBS--功能4:个人站点页面设计(ORM跨表与分组查询)

查询: 日期归档查询 1 date_format ============date,time,datetime=========== create table t_mul_new(d date,t time,dt datetime); insert into t_mul_new values(now(),now(),now()); select * from t_mul; mysql> select * from t_mul; +------------+----------+---------

mysql 分组查询教程

1.分组 分组就是将一个"数据集"划分成若干个"小区域",然后针对若干个"小区域"进行数据处理. 2.分组的特点 1.)group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组 2.)group by可用于单个字段分组,也可用于多个字段分组 3 分组的用法 select 字段名 from 数据表 group by 分组字段名 4 使用分组时相当于把某个字段按照某个要求叠在了一起,这时候使用普通的方法无法查看每个组的内容,需

oracle解决多表关联分组查询问题

做了一个功能需要分组查询,同时查询A表分组查询的ID需要关联B表的数据,本来想两个表关联查询,但是报group by 语法不正确.所以做了以下修改. select count(*), cindexid,(select vindexcode from comindex where pk_index =cindexid) as vindexcode ,iquesttype from rqt_examquest where pk_examquest in (    select cexamquesti

oracle中关联查询、分组查询

高级查询 1.关联查询作用:可以跨越多表查询 --查询出员工的名字和他所在部门的的名字//古老的写法select first_name,name from s_emp,s_dept where s_emp.dept_id = s_dept.id;//现在的写法select e.first_name,s.name from s_emp e join s_dept s on e.dept_id = s.id;语法:select 列,列,列 from 表1 join 表2on 表1外键=表2主键 案例

oracle高级查询(实例基于scott用户四张表)

oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ======================================================================= scott用户的四张表(emp,dept,bonus,salgrade) 没有这四张表的可参考http://blog.csdn.net/love_legain/article/details/54311040进行创建 -----------------------

Oracle数据库从入门到精通-分组统计查询

视频课程:李兴华 Oracle从入门到精通 视频课程学习者:阳光罗诺 视频来源:51CTO学院 整体内容: 统计函数的使用 分组统计查询的实现 对分组的数据过滤 统计函数 在之前我们就学习过一个COUNT()函数,这个函数的主要作用是统计一张表之中的数据量的个数.和它功能与之类似的常用函数有五个: 统计个数COUNT():根据表中的实际数据量返回结果. 求和SUM():是针对于数字的统计 平均值AVG():是针对数字的统计 最小值MIN():各种数据类型都支持. 最大值MAX():各种数据类型都

oracle使用LEFT JOIN关联产生的问题在查询结果中使用CASE WHEN 无法判断

oracle使用LEFT JOIN关联产生的问题在查询结果中使用CASE WHEN 无法判断 查询方式一: 1 SELECT 2 CASE WHEN (SELECT CAST(SUM(CASE 3 WHEN (ALLOCABLE_PRIME_CURRENCY_VALUE IS NULL AND STATE_IND = 1) THEN 4 NVL(PRIME_CURRENCY_VALUE, 0) 5 ELSE 6 NVL(ALLOCABLE_PRIME_CURRENCY_VALUE, 0) END

Oracle和MySQL分组查询GROUP BY

Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别? 答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段必须在GROUP BY后边出现,否则会报错:“ORA-00979: not a GROUP BY expression”.而MySQL则不同,如果SELECT出来的字段在GROUP BY后面没有出现,那么会随机取出一个值,而这样查询出来的数据不准确,语义也不明确.所以,作者建议在写SQL语句的时候,