精华内容
下载资源
问答
  • 分组查询

    千次阅读 2017-02-22 12:56:17
    分组查询

    分组查询主要涉及到两个子句,分别是:group byhaving

    一group by

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

    mysql> select job, sum(sal) from emp group by job;
    +-----------+----------+
    | job       | sum(sal) |
    +-----------+----------+
    | ANALYST   |  6000.00 |
    | CLERK     |  4150.00 |
    | MANAGER   |  8275.00 |
    | PRESIDENT |  5000.00 |
    | SALESMAN  |  5600.00 |
    +-----------+----------+
    如果使用了order by,那么order by必须放在group by后面,否则,会报错。

    SQL语句中若有group by语句,那么在select语句后面只能跟分组函数+参与分组的字段

    二having

    如果想对分组数据再进行过滤需要使用having子句

    取得每个岗位的平均工资大于2000

    mysql> select job from emp group by job having avg(sal) > 2000;
    +-----------+
    | job       |
    +-----------+
    | ANALYST   |
    | MANAGER   |
    | PRESIDENT |
    +-----------+

    三select语句总结

    一个完整的select语句结构如下:

    select

            字段...

    from

            表...

    where 

            过滤条件...

    group by

            分组条件...

    having

            分组之后的过滤条件

    order by

            字段...

    以上语句的执行顺序

            1. 首先执行where语句过滤原始数据

            2. 执行group by进行分组

            3. 执行having对分组数据进行操作

            4. 执行select选出数据

            5. 执行order by排序

    原则:能在where中过滤的数据,尽量在where中过滤,效率较高。having的过滤是专门对分组之后的数据进行过滤的。

    展开全文
  • Mysql——分组查询

    万次阅读 多人点赞 2019-06-20 00:47:03
     在进行分组统计时会用到分组查询,比如按部门统计人数、按工种统计工资情况等。分组查询一定会使用到分组函数,也一定会用到group by子句。  Tip:   1️⃣在分组查询中,所有不是分组函数的查询字段都要...

     在进行分组统计时会用到分组查询,比如按部门统计人数、按工种统计工资情况等。分组查询一定会使用到分组函数,也一定会用到group by子句。
    在这里插入图片描述
    Tip
      1️⃣在单表分组查询中,所有不是分组函数的查询字段都要出现在group by子句之后,出现的顺序不影响查询结果;
      2️⃣where子句一定是紧跟着from子句的,from关键字后是操作的表对象,where子句中的判断条件要么是常量要么是操作的表对象的字段,且where子句中不支持使用别名,子查询同样如此;
      3️⃣通常而言分组前的数据筛选放在where子句中,分组后的数据筛选放在having子句中,但如果分组后的数据筛选的条件是操作表的字段时(比如分组的条件)也可以放在where子句中(且此时效率更高),但是where子句中是不能使用分组函数的,原因是分组函数的结果并不是操作表的字段,因此我们可以这么去记忆:只要筛选条件是操作表中的字段就放在where子句中否则放在having子句中,示例:以前两个语句的结果完全相同,但是第一个语句的效率要高于第二个

    select count(*),order_code 
    from lmt_flow_advance_check_apply
    where order_code >=  'BJ20190104'
    group by order_code;
    
    select count(*),order_code 
    from lmt_flow_advance_check_apply
    group by order_code
    having order_code >=  'BJ20190104';
    

      4️⃣order by子句放在最后;
      5️⃣order by子句、group by子句和having子句都支持别名;
      6️⃣SQL也支持按表达式或函数分组,且支持别名

    #使用函数分组
    SELECT COUNT(*),LENGTH(last_name)
    FROM employees
    GROUP BY LENGTH(last_name);
    
    #使用函数分组且使用别名
    SELECT COUNT(*) c,LENGTH(last_name) name_len
    FROM employees
    GROUP BY name_len
    HAVING c > 5;
    
    展开全文
  • MySQL 分组查询

    2019-12-09 23:15:56
    分组查询 按照某个或多个数据进行分组 分组查询语法:groupby 分组字段 [group by 字段] [having (条件表达式)] having:过滤分组 以下表为例 示例1:按照性别分组。分别查询男、女同学的平均分 ...

    分组查询

    按照某个或多个数据进行分组

    分组查询语法:group by 分组字段

    [group by 字段] [having (条件表达式)]

    having:过滤分组

    以下表为例

     

    示例1:按照性别分组。分别查询男、女同学的平均分

     

    示例2:按照性别分组。分别查询男、女同学的平均分,人数

     

    示例3:按照性别分组。 分别查询男、女同学的平均分,人数要求:分数低于70分的人,不参与分组

     

    示例4:按照性别分组。 分别查询男、女同学的平均分,人数要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人

     

    示例5:多字段分组

    分组从左往右,先按照第一个字段进行,然后对第一个字段相同的值按照第二个字段分组,以此类推。

    select price,count(*) as total from fruits group by price,id;

     

    补充with rollup 关键字

    使用with rollup 后,会在所有分组记录后新增一条记录,该记录计算查询出的所有纪律的总和,即统计记录数量。


    注意:where 和 having 的区别

    • where在分组之前进行限定,having在分组之后进行限定。
    • where后不可以跟聚合函数,having可以进行聚合函数的判断。
    • where先执行条件,再执行查询
    • having 先执行查询,再执行条件

    展开全文
  • 分组查询和分组筛选

    2019-08-02 21:13:33
    ----分组查询&筛选学习: --关键字:group by 分组字段名,分组字段名.... --注意1:使用了分组后,在select语句中只允许出现分组字段和多行函数。 --注意2:如果是多字段分组,则先按照第一字段分组,然后...
    ----分组查询&筛选学习:
      
    
        --关键字:group by 分组字段名,分组字段名....
             --注意1:使用了分组后,在select语句中只允许出现分组字段和多行函数。
             --注意2:如果是多字段分组,则先按照第一字段分组,然后每个小组继续按照第二个字段继续分组,以此类推。
             --注意3:在where子句中不允许出现多行函数。
    
    
    
         --分组筛选
             --关键字:having
                  --作用:针对分组进行分组后的数据筛选,允许使用多行函数。
                  --注意:having关键必须和分组结合使用。不允许单独使用。   
                  --where和having的比较:
                     --where子句不允许出现多行函数,having允许出现多行函数
                     --where子句和having都可以使用普通字段直接进行筛选,但是where的效率高于having
                        --where执行顺序: from--->where--->group by-->select-->order by
                        --having执行顺序:from--->group by-->select--->having--->order by
    
                   --结论:在分组语句中,使用where进行字段级别的筛选,使用having进行多行函数的筛选。    
    
    
        
      --查询最高工资和员工数
          select max(sal),count(*) from emp
        
      --查询不同部门的最高工资
          select deptno,max(sal) from emp group by deptno
          select * from emp
       
       --查询不同工作岗位的员工数
          select job, count(*) from emp group by job
       
       --查询不同部门的不同工作岗位的人数
          select deptno ,lower(job),count(*) from emp group by deptno,job order by deptno
      
    
    
        --查询不同部门的不同工作岗位的并且人数大于1的信息
          select deptno ,lower(job),count(*) from emp  group by deptno,job having count(*)>1 order by deptno
        
        --查询部门号大于10的不同部门的不同工作岗位的人数
              --使用having关键字
              select deptno ,lower(job),count(*) from emp group by deptno,job  having deptno>10  order by deptno
              --使用where关键字
              select deptno,job,count(*) from emp where deptno>10 group by deptno,job  order by deptno
    
    
    ---SQL查询语句的结构
            --select 子句                 
         要查询的数据(oracle函数,别名,连接符,去除重复,逻辑运算)
            --from语句                     决定要查询的表(表名)             
            --where子句                    筛选数据(筛选条件,关键字)
            --group by子句                 分组     (分组字段)
            --having子句                   分组筛选   (多行函数筛选条件)
            --order by子句                 排序       (排序)
            --from-->where--->group by-->select--->having--->order by
            

     

    展开全文
  • MySQL分组查询

    2019-10-04 11:02:34
    分组查询是指使用group by字句对查询信息进行分组。例如:我们要统计出products表中所有分类商品的总数量,这时就需要使用group by 来对products表中的商品根据category进行分组操作,分组后我们再对每一组数据进行...
  • Sqlite 分组查询

    千次阅读 2017-05-31 18:29:37
    Sqlite 分组查询
  • mysql分组查询

    千次阅读 2018-12-18 18:57:51
    mysql分组查询 分组查询 /* 语法: select 查询列表 from 表 【where 筛选条件】 group by 分组的字段 【order by 排序的字段】; 注意1:where和from是亲戚,他们必须挨着 注意2:查询列表比较特殊,要求是分组...
  • 一、分组查询 语法:group by 分组字段; 直接上例子 #按照性别分组,查询男女平均分 SELECT sex,AVG(math) FROM student GROUP BY sex; 结果如下: #按照性别分组,分别查询男女平均分、人数 SELECT sex,AVG(math...
  • 什么是分组查询?将查询结果按照1个或多个字段进行分组,字段值相同的为一组其实就是按照某一列进行分类分组使用SELECT gender from employee GROUP BY gender;根据gender字段来分组,gender字段的全部值只有两个('...
  • Oracle分组查询

    2019-07-22 22:05:15
    分组查询 分组函数 :group by 要分组的列名 对数据集合处理的函数,可以处理多行数据 --5个分组函数 --count --计数函数,用于数量的统计 --sum 求和函数,对数据进行求和 --avg 求评平均,对一组数据求平均值...
  • Oracle 分组查询

    2017-09-02 21:58:11
    分组查询 分组查询的语法: SELECT [DISTINCT] *|分组字段1 [别名] [,分组字段2 [别名] ,…] | 统计函数 FROM 表名称 [别名], [表名称 [别名] ,…] [WHERE 条件(s)] [GROUP BY 分组字段1 [,分组字段2 ,…]] ...
  • mysql分组查询使用的的关键字是group by,分组过滤使用到的关键字是having。需要先分组查询才能进行分组过滤,个人理解having和where的区别有以下: 1.聚集函数count、sum、avg、max、min不能在where子句中使用。 ...
  • 连接查询和分组查询

    千次阅读 2017-09-28 15:59:51
    *** 分组查询: ** 使用 group by 进行分组查询 语句:《有列名:StudentID,CourseID,Scores》 select CourseID,avg(S cores) as 课程平均成绩 from Score group by CourseID 例 1:查询男女学生的人数各是多
  • 分组查询的理解

    2020-08-28 10:04:43
    分组查询的理解 对某个字段进行分组查询,就是将这个字段相同的数据归纳一起,并结合聚合函数对数据进行相应的处理。 通常应用场景:对表中某个字段或信息需要统计数据,以及计算数据是使用 举例:查询所有的学生的...
  • Cakephp分组查询

    2018-06-15 16:01:03
    cakephp分组查询 cakephp做分组查询 例如: $app_records = $this->Controller->ApplicationRecord->find('all', array( 'conditions' => $conditions, 'fields' => array...
  • 模糊查询与分组查询I

    2019-09-19 17:27:11
    模糊查询与分组查询 采用group by 来分组查询 源代码 – SELECT sex,COUNT(id) FROM studentinfo GROUP BY sex – SELECT classid,COUNT(id) FROM studentinfo GROUP BY classid SELECT classid,...
  • sql实现分组查询

    2020-05-08 09:18:09
    # 进阶5:分组查询 /* 语法: select 分组函数,列(要求出现在group by的后面) from 表 【where 筛选条件】 group by 分组的列表 【order by 子句】 注意:查询列表必须特殊,要求是分组函数和group by 后...
  • Django的分组查询 ,F查询,Q查询,Raw查询 django的分组查询 分组查询在django当中不可以使用group_by,需要用annotate。 mysql Select AVG(price) from goods group_by goods_type Select count(price) from goods ...
  • SQL分组查询

    千次阅读 2017-11-03 21:32:38
    本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析。创建分组是通过GROUP BY子句实现的。与WHERE子句不同,GROUP ...在SQL Server中使用的分组查询是ORDER BY
  • sql分组查询

    2016-06-21 12:40:39
    SQL分组查询 一.分组查询 1.使用group by进行分组查询 在使用group by关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项: 〉被分组的列 〉为每个分组返回一个值得表达式,例如用一个...
  • 文章目录分组函数功能分类函数特点:分组函数的使用1.简单使用2.参数支持哪些类型注意,此时得出数据已经没意义了,即使没报错,拿到这些数据无意义的...查询部门编号为90的员工个数分组查询语法:注意:特点:注意点:
  • SQL语句-分组查询

    2020-07-23 15:01:23
    分组查询分组查询GroupBy+Group_concat分组查询+聚合函数分组查询+havingwhere和having的区别 表 sno s_name gender speciality 1001 张三 男 计算机 1002 李四 男计算机 1003 王五 女 会计 1004 ...
  • 分组查询与模糊查询

    2018-08-20 23:13:26
    分组查询关键字:group by 注意:select 后的列名必须出现在group by 后面 例如: Select 列名 from 表名 where 条件 Group by 列名 开窗函数:over() 用法:聚合函数() over() as ‘列名’ ...
  • ----分组查询&筛选学习: --关键字:group by 分组字段名,分组字段名.... --注意1:使用了分组后,在select语句中只允许出现分组字段和多行函数。 --注意2:如果是多字段分组,则先按照第一字段分组,然后每...
  • oracle分组查询

    千次阅读 2018-08-30 09:24:05
    分组查询 – 使用 group by 语句。 – 如果不想报错的话,需要将 select 后面列表中的字段添加到 group by 子句中即可。 – 其实很简单,就是以 deptno 作为一个参照物,根据参照物定义出条件对象。 select ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,177
精华内容 10,470
关键字:

分组查询