组函数,分组,子查询(031)

一.分组

            1.组函数操作行集,给出每组的结果。这些集合可能是整个表或者是表分的组。

            2.组函数和单行函数的区别

                单行函数对每行的结果做处理,组函数只对分组的函数做处理。

                单行函数对每个结果集返回一个结果,组函数对每个组返回一个结果。

            3.组函数的类型

                age,count,min,max,sum

            4.组函数的语法

                select [column],function(column)...

                from table

                [where condition]

                [group by column]

                [order by column]

            5.组函数使用原则

                参数数据类型可以是:char ,varchar1, number,date

                所有组函数忽视空值,可以用nvl,nvl2,函数代替空值

二.函数的使用

        1.avg,sum

            两个函数的参数只能是数值类型

            实列:

                求员工表中平均薪水与薪水总额

                select avg(salary),sum(salary) from employees'

        2.min和max

            参数类型可以是:数字,字符,日期

            实列:

            求员工表中的最高薪水和最低薪水

            select mun(salary),min(salary) from employees

        3.count

            返回一个表中的行数

        三种格式:

        count(*)

           返回所有行数,包括有数值的,重复行,空值,如果有where ,则返回满足条件的行数

        实列:

        返回查询结果的 行数:

        select count(*) from employees;

        count(expr)

        返回有expr指定的列,返回非空的行数

        实列:

        显示部门80中有奖金的员工人数

            select count(commission_pct) from employees e  where e.commission_id=80

            count(distinct expr)

        除去重复行的函数

        4.组函数和null值

        使用nvl函数处理组函数忽视的空值,是空值的行也查询出来

        实列:

            计算有佣金的员工的平均值

            select avg(commission_pct) from employees

            计算所有员工的佣金的平均值

            select avg(nvl(commission_pct,0)) from employees

   三.创建数据组

        1.根据查询的结果集划分跟小的组,用group by实现

        2.group by子句可以把表中的行划分为组,然后用组函数返回每一组的信息。

        3.分组原则

            (1)select子句中出现的列必须出现在

                group by子句中,否则会出现一个错误信息。

            (2)可以使用where子句将分组前的数据过滤。

            (3)group by子句中不能用列的别名

            (4)group by包含的列中的字段默认升序排列。

            (5)select子句是可以不包含group by中的列

                实列:

                    显示出每个部门付给每个工作岗位的合计薪水报告

select department_id, sum(salary), job_id from employees group by job_id , department_id order by department_id

        4.group by的执行顺序

                数据查询-->数据分组 -->执行组函数

四.having子句

        1.having于group by联合使用,用来过滤分组后的数据。having弥补了where函数

与聚合函数不能联合使用的不足。

        2.过滤的列如果是组函数处理过的列需要加上组函数

实列:

        显示最高薪水大于10000的部门的部门编号和最高薪水

select department_id,max(salary) from employees group by department_id having max(salary)>10000;

----------------------------子查询---------------------------------------------------------


一.子查询简介

        1.字查询是 一个select语句,他是嵌套在另一个select语句中的子句

        2.语法结构

        select select_list from table where exper operator(select select_list from table)

        3.子查询在查询之前执行一次,子查询的结果被用于主查询。

        4.可以将子查询放在 where子句中,having子句中,from子句中

        5.查询原则

            (1)子查询放在圆括号中

            (2)将子查询放在比较条件的右边

            (3)在单行子查询中用单行运算符,多行字查询中用多行运算符。

        6.子查询的类型

            单行子查询:子查询语句值返回一行的查询

            多行子查询:子查询返回多行的查询

二.单行子查询

        1.仅返回一行,使用单行比较运算符

        2.单行运算符


        3.实列:

            显示哪些job_id和员工141相同的员工的名字与job_id

select job_id,last_name from employees group by job_id having job_id=(select job_id from employees where employee_id =141);

        4.实列:

            显示job_id于员工141相同,并且薪水高于143的那些员工:

select salary ,job_id from employees where job_id=(select job_id from employees where employee_id=141) and salary>(select salary from employees where employee_id=143)

        5.子查询中使用组函数

            实列:显示所有薪水等于最低薪水的员工的last_name,job_id,salary:

select last_name,job_id,salary from employees where salary=(select min(salary) from employees );

        6.代子查询的having的子句

            实列:显示所有最低薪水小于部门50的最低薪水的部门号和最低薪水

select dapartment_id ,min(salary) from employees group by department_id having min(salary)<(select min(salary) from employees where department_id=50)

三.多行子查询

        1.返回多于一行,使用多行比较符

        2.多行比较符


        3.in运算符

            实列:

            查询各部门收入为部门最低的哪些成员,显示名字,薪水,部门id

select first_name,salary,department_id from employees where salary in (select min(salary) from employees group by department_id)

        4.any运算符

            <  any意思是小于最大值,>any意思是大于最大值

            实列:

            显示工作岗位不是 IT_PROG 的雇员,并且

            这些雇员的的薪水少于 IT_PROG 工作岗位的雇员的 ID、名字、工作岗位和薪水

select employee_id,last_name,job_id, salary from employees where job_id<>'IT_PROG' and salary < any(select salary from employees where jon_id='IT_PROG')

        5.all运算符

            <ALL 意思是小于最小值。>ALL 意思是大于最大值。

            ANY 与 ALL 的区别:

            ANY: >ANY 表示至少大于一个值,即大于最小值。

            ALL: >ALL 表示大于每一个值,既大于最大值。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容

  • 2017/3/14 RDBMS:关系型数据库管理系统 关系模型独立于语言 SQL有几种不同类型的语言:数据定义语言...
    ancherl阅读 1,619评论 0 6
  • oracle 数据库的scott帐号。 <>作为查询条件时,可以使用!= 来替换。 SQL> select * f...
    庄栋栋阅读 2,137评论 0 0
  • 1、隐式连接 1、笛卡尔乘积笛卡尔(Descartes)乘积又叫直积。假设集合A={a,b},集合B={0,1,2...
    AKyS佐毅阅读 2,037评论 0 1
  • 16用大众孰知的标签取名字 站在客户的角度,深度挖掘客户最底层的需求点,卖友肌多好多好没有比自信,冻龄,白,没有鱼...
    yuyu7926阅读 505评论 0 0
  • 鹰不需鼓掌,也在飞翔。小草没人心疼,也在成长。拼搏时请不要放弃,坚持注定有孤独彷徨,质疑嘲笑,也无妨! 欣姐新研发...
    欣姐_3536阅读 135评论 0 1