精华内容
下载资源
问答
  • sql2000对查询结果分组

    千次阅读 2013-12-25 11:23:10
    Group By 子句将查询结果表按某一列或多列值分组,值相等的为一组。分组的目的是为了细化函数的作用对象,分组函数将作用于每一个组,即每一组都有一个函数值。 例30 求各个课程号及相应的选课人数 select ...

             Group By  子句将查询结果表按某一列或多列值分组,值相等的为一组。分组的目的是为了细化集函数的作用对象,分组后集函数将作用于每一个组,即每一组都有一个函数值。

    例30  求各个课程号及相应的选课人数

    select cno, count(sno) '分组人数'
    from sc
    group by cno

    具有相同cno值的元组为一组,然后对每一组作用集函数count计算,以求得该组的学生人数,查询结果如下:

    如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以用HAVING短语指定筛选条件。

    例31 查询选修了3门以上课程的学生学号

    select sno
    from sc
    group by sno
    having count(*)>3

    where子句与having短语的区别:在于作用对象不同。where子句作用于基本表或视图,从中选择满足条件的元组。having短语作用于组,从中选择满足条件的组。

     

    展开全文
  • 关注公众号:SQL数据库开发,了解更多SQL高级知识分组集的定义是多个分组的并集,用于在一个查询中,按照不同的分组集合进行聚合运算,等价于单个分组使用"UNION ALL",计算多个结果集的并集。分组集种类SQL ...

    6e10b0bc3c0da0a29fc6e6ce14879cee.png

    关注公众号:SQL数据库开发,了解更多SQL高级知识

    分组集的定义

    是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用"UNION ALL",计算多个结果集的并集。

    分组集种类

    SQL Server的分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版

    GROUPING SETS

    GROUPING SETS子句允许你指定多个GROUP BY选项。增强了GROUP BY的功能。

    可以通过一条SELECT语句实现复杂繁琐的多条SELECT语句的查询。并且更加的

    高效,解析存储一条SQL于语句

    GROUP SETS示例

    我们以Customers表为例,其内容如下:

    7f8e666969d90786069581b63db192cf.png

    我们先分别对城市和省份进行分组,统计出他们的数量

    SELECT 

    结果为:

    0176d80e1a49b8e529f7591ee3842ec0.png

    再使用GROUPING SETS来统计

    SELECT 

    其实上下两个结果是一样的,只是UNION ALL不排序,而GROUPING SETS增加了排序。这样不仅减少了代码,而且这样的效率会比UNION ALL的效率高。通常GROUPING SETS使用在组合分析中。

    ROLLUP

    ROLLUP也是GROUPING SETS的一种简略写法,我们举例说明。

    我们先使用GROUPING SETS的多层组合

    SELECT 

    其结果为:

    888581224da7eea17df184ef122c03ea.png

    我们使用ROLLUP可以这样写

    SELECT 

    其结果为:

    2f8e96659f0c0c939af3b438b7892a9a.png

    我们来解读一下ROLLUP的作用,其作用是对每个列先进行一次分组,并且对第一列的数据在每个组内还进行一次汇总,最后对所有的数据再进行一次汇总,所以相比GROUPING SETS会多了个所以数据的汇总。这个在对组内进行聚合时是经常使用到的。

    CUBE

    而CUBE相比ROLLUP就更多一个维度了,我们还是距离说明。

    SELECT 

    结果如下:

    a33bc8c210d6330bcfe15edd1122e497.png

    在ROLLUP的基础上,还会将第一列每组的汇总数据额外显示在最后。

    批注

    分组集类似于Excel的透视图,可以对各类数据进行组内计算,这里不止可以进行数量统计,也可以进行求和,最大最小值等操作。是我们在进行数据分析时候经常使用到的一组功能。

    展开全文
  • 分组查询结果过滤

    2019-05-19 08:18:42
    分组查询中的结果集无法使用WHERE子句过滤,ORACLE提供了另一种方法HAVING子句对分组查询结果集进行过滤 HAVING子句与WHERE子句的区别 WHERE子句在GROUP BY 子句之前执行,不能再WHERE子句中使用统计函数 HAVING...

    分组查询中的结果集无法使用WHERE子句过滤,ORACLE提供了另一种方法HAVING子句对分组查询的结果集进行过滤
    HAVING子句与WHERE子句的区别
    WHERE子句在GROUP BY 子句之前执行,不能再WHERE子句中使用统计函数
    HAVING子句在GROUP BY子句之后执行,可以在HAVING子句中使用统计函数
    HAVING子句的语法结构:

    SELECT *//5
    	FROM 数据来源,数据来源//1
    		WHERE 过滤条件//2
    			GROUP BY 分组字段//3
    				HAVING 分组过滤语句//4
    					ORDER BY 排序字段 ASC|DESC;//6 
    

    案例
    查询平均工资高于2000的职位名称和平均工资

    SELECT job,AVG(sal) FROM emp GROUP BY job HAVING AVG(sal)>2000;
    

    在这里插入图片描述
    查询出非销售人员的工作名称以及从事统一工作的雇员的工资总和,并且要求从事同一工作的雇员工资总和大于5000,输出结果按雇员薪资总和升序排序

    SELECT job,SUM(sal) FROM emp WHERE job<>'SALESMAN' GROUP BY job
     HAVING SUM(sal)>5000 ORDER BY SUM(sal) ASC;
    

    在这里插入图片描述

    展开全文
  • 1、分组查询分组函数(多行处理函数)count取得记录数sum求和avg取平均max取最大的数min取最小的数分组函数也叫:多行处理函数。多行处理函数的特色:输入多行,最终输出的结果是1行。分组函数自动忽略NULL。全部的...

    1、分组查询

    分组函数(多行处理函数)

    count

    取得记录数

    sum

    求和

    avg

    取平均

    max

    取最大的数

    min

    取最小的数

    分组函数也叫:多行处理函数。

    多行处理函数的特色:输入多行,最终输出的结果是1行。

    分组函数自动忽略NULL。

    全部的分组函数都是对“某一组”数据进行操做的。

    注意:分组函数不能直接使用在 where 关键字后面。

    案例:web

    取得全部的员工数

    select count(*) from emp;

    b49023a60165630ae62e83e259a7faf1.png

    取得薪水的合计

    select sum(sal) from emp;

    c8cbced93095b75318952370dddb0a5a.png

    单行处理函数

    输入一行,输出一行。

    注意:全部数据库规定,只要有NULL参与的运算结果必定是NULL。

    使用ifnull() 空处理函数

    语法:

    ifnull(可能为NULL的数据,被当作什么处理) : 单行处理函数。sql

    案例:数据库

    计算每一个员工的年薪

    分析:年薪=(工资+奖金)*12,有的人可能没有奖金,这个字段可能为空,使用ifnull函数将为null的奖金看成0处理。

    select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;

    ae51426d385d38355786110d1063fd13.png

    分组查询

    group by : 按照某个字段或者某些字段进行分组。

    having : having是对分组以后的数据进行再次过滤。

    注意:

    分组函数通常都会和group by联合使用,而且任何一个分组函数(count sum avg max min)都是在group by语句执行结束以后才会执行的。

    当一条sql语句没有group by的话,整张表的数据会自成一组。

    当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段。svg

    案例:函数

    取得每一个工做岗位的工资合计,要求显示岗位名称和工资合计

    select job,sum(sal) from emp group by job;

    6ccfb98b3d79a5f8f4c16f69a81048b5.png

    每一个工做岗位的平均薪资

    select job,avg(sal) from emp group by job;

    f7228560cacfc7c9779d5608d62a9dea.png

    找出每一个部门不一样工做岗位的最高薪资。

    select deptno,job,max(sal) from emp group by deptno,job;

    7b6e819e92089102c0d1eb3477e5af42.png

    找出每一个部门的最高薪资,要求显示薪资大于2900的数据。

    select deptno,max(sal) from emp where sal>2900 group by deptno;

    137aba5bddc80dba727fe31b535a53da.png

    找出每一个部门的平均薪资,要求显示薪资大于2000的数据。

    select deptno,avg(sal) from emp where sal>2000 group by deptno;

    582b12b1a0ea3e5bc7f488a79c66cd5a.png

    总结一个完整的DQL语句

    执行顺序:

    ea39385e700ad6a1b73920f59a9a246c.png3d

    查询结果集的去重

    distinct关键字去除重复记录

    distinct只能出如今全部字段的最前面。

    案例:xml

    统计岗位的数量

    select count( distinct job) from emp;

    29c5a8df2ce91dc250db22a5f1e7376c.png

    2、链接查询

    多张表联合查询取出数据

    链接查询分类:

    1.根据语法出现的年代来划分:SQL9二、SQL99

    2.根据表的链接方式来划分:

    内链接:等值链接、非等值链接、自链接

    外链接:左外链接(左链接)、右外链接(右链接)blog

    内链接:

    假设A和B表进行链接,使用内链接的话,凡是A表和B表可以匹配上的记录查询出来,这就是内链接。AB两张表没有主副之分,两张表是平等的。

    等值链接:

    最大特色是:条件是等量关系。

    语法:

    8bac96986f1118d258ef4431373e18e7.png

    inner能够省略的,带着inner目的是可读性好一些。

    案例:

    查询每一个员工的部门名称,要求显示员工名和部门名。

    f6bf368ed269ebf136c1fb2e15199f54.png

    非等值链接:

    最大的特色是:链接条件中的关系是非等量关系。

    案例:图片

    找出每一个员工的工资等级,要求显示员工名、工资、工资等级。

    aeeb85a15cbfee5762ce2d84fdaa8efc.pngit

    自连接:

    最大的特色是:一张表看作两张表。本身链接本身。

    案例:

    找出每一个员工的上级领导,要求显示员工名和对应的领导名。

    4016a02c3f862a4ff175beb29da0afa4.png

    外链接:

    外链接最重要的特色是:主表的数据无条件的所有查询出来。

    假设A和B表进行链接,使用外链接的话,AB两张表中有一张表是主表,一张表是副表,主要查询主表中的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。

    左外链接(左链接):表示左边的这张表是主表。

    右外链接(右链接):表示右边的这张表是主表。

    左链接有右链接的写法,右链接也会有对应的左链接的写法。

    案例:

    找出每一个员工的上级领导?(全部员工必须所有查询出来。)

    f77bb04a88fb6e8bd3a63526ce7a95f9.png

    ps: 另外一种写法

    36f1e7a56bf3d12261d266fddcc07d86.png

    3张表进行查询

    注意:

    9cc7a136251499679a177dda563dd325.png

    案例:

    找出每个员工的部门名称以及工资等级。

    ab7709f0ca1872f8ed73d9f953a7f088.png

    找出每个员工的部门名称、工资等级、以及上级领导。

    a9bd6ee4dfeb833231502bbbe55297bd.png

    3、union( 能够合并集合(相加))

    案例:

    查询 job 包含 MANAGER 和包含 SALESMAN 的员工

    f203200a617dd41aa87f84ec1a0c285f.png

    采用 union 来合并

    ac65dd3c3ad71188019651395df7f812.png

    今天的分享就到这里啦!!~感谢你们的观看,但愿对你们有帮助的话麻烦给个丝滑三连击。(点赞+转发+关注)

    一块儿加油,一块儿努力,一块儿秃见成效!

    展开全文
  • Mysql从8.0版本开始,也和Sql Server、Oracle一样支持在查询中使用窗口函数,本文将根据官方文档,通过实例介绍窗口函数并举例分组排序函数的使用。英语好的大佬请移步官方文档~点我!本文用到的学生分数表格和语句...
  • 开发做了好几年但sql 一直很弱,复杂的sql 没怎么写过。其实是因为不会写。...1:GROUP_CONCAT() 他的作用是 将一多的变体 ,按照你指定的 规则 整合为一个字段。 参数 SEPARATOR 关键字 用来指定分隔符
  • 聚合分析是数据库中重要的...对一个数据求最大、最小、和、平均值等指标的聚合,在ES中称为指标聚合 metric而关系型数据库中除了有聚合函数外,还可以对查询出的数据进行分组group by,再在组上进行指标聚合。在 ...
  • 很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果。  如,存储过程sp_GetBorrowRecord @BeginTime,@EndTime 可以...
  • Solr分组聚合查询之Group

    万次阅读 2017-03-18 22:10:58
    摘要: Solr结果的分组处理除了...Facet返回所有相关的结果并允许用户基于facet的目录重新定义结果集。Facet可以对分组数量进行过滤,以及排序,和日期范围,时间范围分组,但是如果你想得到具体的数据,还得需要
  • 分组查询group by 和having多字段分组查询having和where的选择总结一个完整的DQL语句关于查询结果集的去重 1>分组函数 count 计数 sum 求和 avg 平均值 max 最大值 min 最小值 记住:所有的分组函数都是“某一...
  • solr group分组查询

    2018-11-20 09:14:00
    摘要:Solr结果的分组处理除了facet还可以使用group。...Facet返回所有相关的结果并允许用户基于facet的目录重新定义结果集。Facet可以对分组数量进行过滤,以及排序,和日期范围,时间范围分组,但是如果你想得到...
  • MySQL 分组查询

    2020-03-14 08:46:12
    MySQL SELECT 语句,允许使用 GROUP BY 子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,实现每个组而不是整个结果集进行整合。 语法格式如下: GROUP BY { <列名> | <...
  • 关注公众号:SQL数据库开发,了解更多SQL高级知识分组集的定义是多个分组的并集,用于在一个查询中,按照不同的分组集合进行聚合运算,等价于单个分组使用"UNION ALL",计算多个结果集的并集。分组集种类SQL ...
  • 3-14结果集扁平化 问题  你有一多关联的两个实体,你想通过一个查询,获取关联中的两个实体的扁平化投影。扁平化或者叫压缩,这是不规范的叫法。它是指一个有父类和子类的对象图,被投影到一个单独的类中。 ...
  • oracle 分组查询

    2019-10-06 02:39:01
    a、row_number() over() row_number()over(partition by col1 order by col2)表示根据col1分组...与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进行排序,而此函数在包含排序从句...
  • 在 MySQL SELECT 语句中,允许使用 GROUP BY 子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,实现每个组而不是整个结果集进行整合。语法格式如下:GROUP BY { | | } [ASC | DESC...
  • 一开始不知道怎么取跑动最好的前两场数据所以通过取表现最好的比赛然后通过id从结果集排除再剩下的比赛取最好表现,最后将两次结果合并的到球员表现最好的两场比赛(不多说都是泪)...SELECT e.ids, e.matchId, ...
  • GROUPING SETS分组集

    千次阅读 2014-01-21 20:19:03
    GROUPING SETS分组集 GROUPING SETS是GROUP BY子句更进一步的扩展, 它让你能够定义多个数据分组。这样做使聚合更容易, 并且因此使得多维数据分析更容易。 你能够用GROUPING SETS在同一查询中定义多个分组ORACLE...
  • having 分组后筛选--------对分组查询结果进行筛选,针对的是分组后的结果集数据的筛选 order by 排序列表 # 注意事项: # 分组查询的查询列表只能是 分组函数 或者group by 后出现的字段 # 分组函数做...
  • 分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组集合进行聚合运算,等价于单个分组使用“union all”,计算多个结果集的并集。使用分组集的聚合查询,返回的select 子句相同,...
  • GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。 SELECT class.institute,SUM(class.grade) AS sum FROM class GROUP BY class.institute 在 SQL 中增加 HAVING 子句原因是,WHERE ...
  • GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。GROUP BY 语法SELECT column_name, function(column_name)FROM table_nameWHERE column_name operator value...
  • 一.JPA使用过程中的问题 JPA常用的查询方法,用实体对应的repository的执行find方法,查询都是实体的全部字段或者其中的单个字段。 如果一个字段进行分组查询时,会出现问题,这里分享一个自定义... 结果集VO...
  • 1.分组介绍:用group by 结合合计函数,根据一个或多列对结果集进行分组 2.格式: select 列名1,聚合函数(计算的列名) from 表名 group by 列名1 3.分组操作: 求各个班的总分数 分析: 1.要显示的列名是class_id ...
  • 前面我们梳理过了分组、排序、聚合函数等查询操作。这些都只是针对一个表的查询操作,这一节,我们要来梳理下多表查询的内容,让内容筛选的范围从单个表变成多个表。 在设计关系型数据库的时候,我们强调表与表之间...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 494
精华内容 197
关键字:

对查询结果集分组