精华内容
下载资源
问答
  • SQL中GROUP BY的理解

    2019-09-20 16:59:34
    在SQL中GROUP BY指的是把总数据表切割成若干子数据表,然后再对各个子数据表进行处理,比如我们需要计算下表中每个年级的人数。 grade name score 一年级 ...

      在SQL中GROUP BY指的是把总数据表切割成若干子数据表,然后再对各个子数据表进行处理,比如我们需要计算下表中每个年级的人数。

    grade name score
    一年级 小王 51
    一年级 小魏 61
    一年级 小张 71
    一年级 小李 51
    一年级 小王 51
    二年级 中王 51
    二年级 中魏 61
    二年级 中张 71
    二年级 中李 51
    二年级 中王 51
    三年级 大王 51
    三年级 大魏 61
    三年级 大张 71
    三年级 大李 51
    三年级 大王 51

      输入SQL语句

    SELECT grade total,COUNT(name) AS total FROM tbl GROUP BY grade; 

      输入SQL语句之后的查询结果入下表:

    grade total
    一年级 5
    三年级 5
    二年级 5

    我们来详细的来看一下具体的执行过程,如下图

    SQL中GROUP BY的理解
      首先,SQL会根据GROUP BY对总数据表进行切分(按“grade”),分成3个子表格。
      然后对每个子表格的“name”字段进行COUNT AS(total)计算,再合并生成最后的数据。
      同样的道理我们还可以计算每个年级的平均分。
      输入SQL语句

    SELECT grade total,avg(score) as avg FROM tbl GROUP BY grade; 

    结果

    grade avg
    一年级 57
    三年级 57
    二年级 57

    具体过程,如图
    SQL中GROUP BY的理解

    转载于:https://my.oschina.net/u/3473376/blog/895264

    展开全文
  • Sql中group by

    2019-10-03 02:10:35
    group by 有一个原则,就是 select 后面的所有列,没有使用聚合函数的列,必须都出现 group by 后面(重要) select * from t_table1 一:查询张三、李四分别做了多少事情。 select Name,Content,count(*) ...

    group by 是分组查询, 一般 GROUP BY 是和聚合函数配合使用

    group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须都出现在 group by 后面(重要)

    select * from t_table1

    一:查询张三、李四分别做了多少事情。

    select Name,Content,count(*) from t_table1 GROUP BY Name;

    有一张资源表和一张图片表、一个资源包含不确定的图片。但是我想让查询出来的资源每个只显示随即的图片

    效果如下图:

    资源表

    select * from t_ziyuan;

    图片表

    select * from t_tupian;

    查询出每个资源的第一张图片

    select tupian.TuPianName,count(*)
    from t_ziyuan as ziyuan
    inner join t_tupian as tupian
    on ziyuan.ID=tupian.ZiYuanID
    GROUP BY ziyuan.ZiYuanName

     

    转载于:https://www.cnblogs.com/pyq228/archive/2012/05/31/2528181.html

    展开全文
  • SQL中GROUP BY的用法

    万次阅读 2018-12-27 10:21:16
    本文主要介绍 SQL GROUP BY 语句的用法。 1 概述 GROUP BY 语句通常用于结合聚合函数(如COUNT()、MAX()等),根据一个或多个列对结果集进行分组。 从字面上来理解,GROUP 表示分组,BY 后接字段名,表示根据...

    本文主要介绍 SQL 中 GROUP BY 语句的用法。

    1 概述

    GROUP BY 语句通常用于结合聚合函数(如COUNT()、MAX()等),根据一个或多个列对结果集进行分组。

    从字面上来理解,GROUP 表示分组,BY 后接字段名,表示根据某个字段进行分组。

    一般情况下,GROUP BY 必须要配合聚合函数一起使用,通过使用聚合函数,在分组之后可以对组内结果进行计数(COUNT)、求和(SUM),求平均数(AVG)操作等。

    常用聚合函数包括:

    • count() —— 计数
    • sum() —— 求和
    • avg() —— 平均数
    • max() —— 最大值
    • min() —— 最小值

    2 用法示例

    现在数据库表内容如下:

    mysql> select * from roles;
    +---------+------------+----------+---------------------+
    | role_id | occupation | camp     | register_time       |
    +---------+------------+----------+---------------------+
    |       1 | mage       | alliance | 2018-12-03 16:11:28 |
    |       2 | paladin    | alliance | 2018-11-30 16:11:28 |
    |       3 | rogue      | horde    | 2018-12-01 16:11:28 |
    |       4 | priest     | alliance | 2018-12-02 16:11:28 |
    |       5 | shaman     | horde    | NULL                |
    |       6 | warrior    | alliance | NULL                |
    |       7 | warlock    | horde    | 2018-12-04 16:11:28 |
    |       8 | hunter     | horde    | NULL                |
    +---------+------------+----------+---------------------+
    8 rows in set (0.00 sec)
    
    mysql> 
    

    我们针对上表进行一些 GROUP BY 用法演示。

    2.1 结合聚合函数

    首先,我们不使用聚合函数,只使用 GROUP BY,查询结果如下:

    mysql> select camp,role_id,occupation,register_time from roles group by camp;
    +----------+---------+------------+---------------------+
    | camp     | role_id | occupation | register_time       |
    +----------+---------+------------+---------------------+
    | alliance |       1 | mage       | 2018-12-03 16:11:28 |
    | horde    |       3 | rogue      | 2018-12-01 16:11:28 |
    +----------+---------+------------+---------------------+
    2 rows in set (0.00 sec)
    
    mysql> 
    

    从上述查询结果能够看到,当不使用聚合函数时,GROUP BY的结果是分组内容中的第一组查询结果。

    当然,在实际使用中,我们通常都需要将聚合函数与GROUP BY用法结合使用,来实现某种目的

    例如,我们想查找“联盟和部落阵营中所有角色最早的注册时间”,则可以通过如下语句实现:

    mysql> select camp,MIN(register_time) as register_time from roles group by camp;
    +----------+---------------------+
    | camp     | register_time       |
    +----------+---------------------+
    | alliance | 2018-11-30 16:11:28 |
    | horde    | 2018-12-01 16:11:28 |
    +----------+---------------------+
    2 rows in set (0.01 sec)
    
    mysql> 
    

    上述查询结果表明,通过使用聚合函数“MIN()”,我们找到了每个阵营中最早的注册时间。

    2.2 HAVING子句

    HAVING 子句可以让我们筛选通过 GROUP BY 分组后的各组数据。

    衔接上文内容,通过 HAVING 子句,我们筛选出所有阵营中最早的注册时间,语句如下:

    mysql> select camp,MIN(register_time) as register_time from roles group by camp HAVING register_time > '2018-12-01 00:00:00';
    +-------+---------------------+
    | camp  | register_time       |
    +-------+---------------------+
    | horde | 2018-12-01 16:11:28 |
    +-------+---------------------+
    1 row in set (0.00 sec)
    
    mysql> 
    

    说明:实际上,上述语句中 HAVING 包含的 register_time 等同于聚合函数 MIN(register_time)。where子句不能包含聚合函数,所以此处只能使用 HAVING 子句。如果使用 where 子句替换 having 子句,会报错:

    mysql> select camp,MIN(register_time) as register_time from roles group by camp WHERE register_time > '2018-12-01 00:00:00';
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE register_time > '2018-12-01 00:00:00'' at line 1
    mysql> 
    

    【HAVING与WHERE的区别】:

    • where 子句的作用:在对查询结果进行分组前,把不符合where条件的行去掉,即在分组之前过滤数据。另外,where条件中不能包含聚组函数。
    • having 子句的作用:筛选满足条件的组,即在分组后过滤数据,条件中经常包含聚组函数,使用 having 条件过滤出特定的组。

     

    展开全文
  • 聚合键: GROUP BY子句指定的列。GROUP BY子句的书写顺序:1. SELECT → 2. FROM → 3. WHERE → 4. GROUP BY执行顺序:FROM → 2. WHERE →3. GROUP BY →4. SELECTSELECT <列名1>, <列名2>, <...

    聚合键:在 GROUP BY子句中指定的列。

    GROUP BY子句的书写顺序:

    1. SELECT → 2. FROM → 3. WHERE → 4. GROUP BY

    执行顺序:

    1. FROM → 2. WHERE →3. GROUP BY →4. SELECT
    SELECT <列名1>, <列名2>, <列名3>   
      FROM <表名 >
     WHERE <条件表达式>
    GROUP BY <列名1>, <列名2>, <列名3>;
    
    SELECT product_type,COUNT(*)
    FROM Product 
    WHERE product_type = ' 衣服 '
    GROUP BY product_type;
    --如果聚合键中含有NULL值,聚合结果也会将NULL作为一组特定的数据

    要点:

    1、使用聚合函数时, SELECT 子句中只能存在以下三种元素。

    ● 常数

    ● 聚合函数

    ● 聚合键

    2、在 GROUP BY 子句中不能使用select子句中定义的列的别名。

    由于group by子句的执行优先级高于select,因此如果在select中定义的列的别名,group by子句并不知道。

    3、GROUP BY子句的结果是随机的。

    4、WHERE子句中不能使用聚合函数,只有SELECT子句、HAVING子句和ORDER BY中才能使用聚合函数。

    展开全文
  • 对于生产环境的图数据库选型,图查询语言一直是用户首要考虑的问题之一。 一些考虑因素包括但不限于易用... 最常见的问题之一是,累加器是否可以实现 SQL GROUP BY聚合操作? 答案是可以的,不仅如此,通过累加...
  • sql中group by的理解

    2019-10-03 16:49:12
    我们的日常工作,写sql的时候,group by应该是每个程序员都会遇到的。 今天,我们来谈论一下关于group by 的相关理解。 针对group by 的例子,我们可以写成如下样子:  select (1) from your_table where (2...
  • SQL中Group by使用

    千次阅读 2017-09-05 20:13:19
    1、Group by使用select XS.学号,XS.姓名,XS.所在系,XX.课程号,KC.课程名 from XS join XX on XS.学号=XX.学号 join KC on KC.课程号=XX....group by XS....order by XX.... 1、在group By子句出现的字段,必须
  • SQL中Group by 简单理解

    2018-12-16 14:49:20
    在sql语言,我们常常想将查询出来的数据进行分组,这时我们就用到了Group by 函数。 eg: 有如下表: student 序号 学号 姓名 性别 1 20161208001 张三 男 2 20161208002 李四 男 3 20161208003 王五 ...
  • 在SQL中合计函数 (比如 SUM) 常常需要和 GROUP BY 语句一起使用进行分组统计 GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。 SQL GROUP BY 语法 SELECT column_name, aggregate_...
  • SQL中group by的使用

    2018-08-29 09:52:18
    group By对数据进行分组,所谓分组就是将一个“数据集”划分为若干个“小区域”,然后针对若干个小区域进行...使用group by的时候一定要对你想要操作的列写在group by之后 查询结果: 2、group by和order by的...
  • group by 使用group by子句联合集合函数分组查询: group by 用于对结果集分组异对,每组数段进行汇总。 语法格式: group by 列名 [having 条件表达式] 它是按指定的列进行分组,将该列相同的记录组成一组,对...
  • 尽量在SQL中Group

    2016-12-02 15:04:34
    对于汇总类型的分析报表,报表生成时往往需要进行分组聚集运算,如果数据库先进行一次分组聚集,能够大大减少取到报表服务器的记录数,加快取数和报表运算的速度。 这是一个典型的交叉分组报表,其sql有...
  • SQL中group by和order by

    千次阅读 2008-10-19 22:42:00
    SQL中group by和order by select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并...
  • sql中group by与having 的使用

    千次阅读 2019-08-21 11:07:26
    原文:sql语句中GROUP BY 和 HAVING的使用 count() 介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般...
  • SQL中group by的用法解析

    千次阅读 2019-01-03 12:14:05
    由于自学很多东西掌握的不够,这个问题一次很重要的面试时候被问到了,是用于写SQL语句当中,犯了很低级的错误,最终没能如愿进入那家公司。 group by的作用是通过一定的规则将一个数据集划分成若干个小区域,然后...
  • SQL中group by的理解

    2018-01-04 14:52:00
    1.group by A,B,C的分组顺序与汇总; group byA,B,C的分组顺序与order by A,B,C的排序一样。即先按A,如果A一样,则再按B,以此类推。 而数据将最后指定的分组上汇总。 转载于:...
  • sql中group by 应用子查询的情况

    千次阅读 2019-05-21 14:17:07
    group by只有需要进行统计的的时候非常有效。 这个值得探究的问题   后来看到可以根据 查询每个类别下id最大值来解决问题上面的sql 改下就可以了。 select count(*) from user_role where id in  ...
  • 一、简介SQL语言 ...SQL语言,是高级的非过程化编程语言,允许用户高层数据结构上工作。它不要求用户指定对数据的存放方式,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据...
  • 今天学习sql sever练习了group by语句。基本语法:group by 分组表达式 with cube|rollupgroup by中的列必须与select的列名相同,从而进行分组。group by进行多列分组按后面字段的优先级进行排列,即group by a,b ...
  • SQL 中GROUP BY 总结

    千次阅读 2009-11-10 04:34:00
    (1)group by语句对select后所选择的字段有一定的限制,即select后没有使用聚合函数的字段必须包含在group by 语句后面的结果集中。(GROUP BY 关键字后跟一个列的列表,称为组合列). (2)不能对数据类型为 ...
  • SQL中GROUP BY语句与HAVING语句的使用 GROUP BY语句,经过研究和练习,终于明白如何使用了,此记录一下同时添加了一个自己举的小例子,通过写这篇文章来加深下自己学习的效果,还能和大家分享下,同时也方便以后...
  • 1、 Having是在group by子句之后:可以针对分组数据进行统计筛选,但是where不行 查询班级人数大于等于4个以上的班级 Where不能使用聚合函数:聚合函数是用在group by分组的时候,where已经运行完毕 Having...
  • sql关键字group by

    2019-10-30 11:49:33
    SQL中GROUP BY语句用于借助某些function将相同的数据分组。注意这里的借助二字。也就是说,如果特定的列不同的行中具有相同的值,则它将这些行排列一组中。 关于GROUP BY的使用要点: GROUP BY子句需要和...
  • sql中group by

    2019-09-28 10:53:47
    使用groupby对查询解结果进行分组时,要把需要分组的字段写最前面----- 正确的分组语句 SELECT id,sectionOfficeId,doctorName FROM doctor GROUP BY sectionOfficeId,id,doctorName 错误的分组语句 SELECT ...
  • sql如何获取group by中最值元素 关键点是对from后面的表进行操作,将其再进行过滤即可。 设:t1表有主键id,code 编码,其他等信息,code可能相同 原: select * from t group by t.code 输出的id 按分组后id...
  • 介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用多条记录上。 SELECT SUM(population) FROM ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,460
精华内容 2,184
关键字:

在sql中groupby