首先group by 的简单说明:
   group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素:
   (1) 出现在select后面的字段 要么是是聚合函数中的,要么就是group by 中的.
   (2) 要筛选结果 可以先使用where 再用group by 或者先用group by 再用having
下面看下 group by多个条件的分析:
在SQL查询器输入以下语句
create table test
(
a varchar(20),
b varchar(20),
c varchar(20)
)
insert into test values(1,'a','甲')
insert into test values(1,'a','甲')
insert into test values(1,'a','甲')
insert into test values(1,'a','甲')
insert into test values(1,'a','乙')
insert into test values(1,'b','乙')
insert into test values(1,'b','乙')
insert into test values(1,'b','乙')
第一次查询

select * from test; 结果如下图:

结果中 按照b列来分:则是 5个a 3个b.

按照c列来分:则是 4个甲 4个乙.

第二次 按照 b列来分组 代码如下
select   count(a),b from test group by b (可以想想把b列作为类似key主键,让它唯一,看看分几组)

第三次 按照 c列来分组 代码如下
select count(a),c from test group by c(可以想想把c列作为类似key主键,让它唯一,看看分几组)

第四次 按照 b c两个条件来分组
select count(a),b,c from test group by b,c (可以想想把b和c列一起作为类似key主键,让它唯一,看看分几组)

第五次 按照 c b 顺序分组
select count(a),b,c from test group by c,b (可以想想把c和b列一起作为类似key主键,让它唯一,看看分几组)

可以看出 group by 两个条件的工作过程:
先对第一个条件b列的值 进行分组,分为 第一组:1-5, 第二组6-8,

然后又对已经存在的两个分组用条件二 c列的值进行分组,发现第一组又可以分为两组 1-4,5

第四次和第五次查询结果的区别:

按照 b c两个条件来分组,先对第一个条件b列的值 进行分组,分为 第一组:1-5, 第二组6-8,

然后又对已经存在的两个分组用条件二 c列的值进行分组,发现第一组又可以分为两组 1-4,5。
按照 c b两个条件来分组,先对第一个条件c列的值 进行分组,分为 第一组:1-4, 第二组5-8,

然后又对已经存在的两个分组用条件二 b列的值进行分组,发现第二组又可以分为两组 5, 6-8。

sql:常用:group by 多个字段的更多相关文章

  1. C# Linq to sql 实现 group by 统计多字段 返回多字段

    Linq to sql 使用group by 统计多个字段,然后返回多个字段的值,话不多说,直接上例子: where u.fy_no == fy_no orderby u.we_no group u  ...

  2. Sql常用语法以及名词解释

    Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...

  3. sql 常用语法汇总

    Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...

  4. SQL 常用的判断、连表、跨库、去重、分组、ROW_NUMBER()分析函数SQL用法

    常用的SQL 由浅入深 大致上回想一下自己常用的SQL,并做个记录,目标是实现可以通过在此页面查找到自己需要的SQL ,陆续补充    有不足之处,请提醒改正 首先我创建了两个库,每个库两张表.(工作 ...

  5. SQL常用函数总结

    SQL常用函数总结 这是我在项目开发中使用db2数据库写存储过程的时候经常用到的sql函数.希望对大家有所帮助: sql cast函数 (1).CAST()函数的参数是一个表达式,它包括用AS关键字分 ...

  6. 【数据库】 SQL 常用语句

    [数据库] SQL 常用语句 1.批量导入 INSERT INTO Table2(field1,field2,...) SELECT value1,value2,... FROMTable1 要求目标 ...

  7. 数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)

    SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) ...

  8. MS SQL巡检系列——检查外键字段是否缺少索引

    前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...

  9. sql语句Group By用法-转载

    sql语句Group By用法一则 2007-10-25 12:00 sql语句Group By用法一则 如果我们的需求变成是要算出每一间店 (store_name) 的营业额 (sales),那怎么 ...

  10. 关于SQL的Group By

    SELECT col1, col2, col3, sum(col3) from T1 GROUP BY col1, col2, col3, col4 ; 对于含有Group By的Sql语句,需要注意 ...

随机推荐

  1. 前端导出文件流[object Object]

    情景:后台返回文件流,前端导出. 参照网上的文章配置responseType:'blob' :blob导出文件乱码_前端小菜鸟__简单的博客-CSDN博客_blob导出乱码 后台管理项目blob导出文 ...

  2. django解决网站CORS前后端跨域问题

    1.安装cors-headers⼯具   pip install django-cors-headers 2.安装cors-headers应⽤ # 注册应用 INSTALLED_APPS = [ 'd ...

  3. oracle之如何获取执行计划方法

    1.什么是执行计划 为了执行sql语句,Oracle在内部必须实现许多步骤,这些步骤可能是从数据库中物理检索数据行,或者用某种方法来准备数据行等,接着Oracle会按照一定的顺序一次执行这些步骤,最后 ...

  4. J V M大概理解

    jvm的大致流程:他把一个Class文件 通过类加载机制 装载到jvm里面,然后放到不同的运行时数据区(Runtime Data Areas),通过编译器来编译. 第一部分,我们可以关注class文件 ...

  5. ERA-Interim 的变量TCW和VIWV可降水量

    可降水量(Precipitable water) 气象上有一个名词"可降水量"(Precipitable water),可以用来衡量大气的水含量. 其公式为 \(W=\frac{1 ...

  6. select multiple 浏览器兼容

    select multiple 时一般是设置 height <select multiple="multiple" style="height:87px;" ...

  7. redis+token实现一个账号只能一个人登录

    自己在闲着没事的时候,突然想到了这么一个小功能,于是决定练习一下,首先想到的是如果一个账号只能一个人登录,可能会出现两个情况,一种是后登录者把前者的账号顶替掉,还有一种就是后者登录的时候会有提示当前账 ...

  8. python获取主机内网中所有MAC地址

    import osimport subprocessimport socket"""python获取主机内网中所有MAC地址"""def g ...

  9. hive支持的压缩算法

    压缩格式的设置 set mapred.output.compression= 压缩格式 工具 算法 扩展名 是否支持分割 Hadoop编码/解码器 default deflate .deflate N ...

  10. Mysql存储的设备推送数据如何利用GroupBy筛选所有设备的最新数据

    首先介绍GroupBy关键字的用法原理: 先来看下表1,表名为test: 表1 执行如下SQL语句:   SELECTnameFROMtestGROUPBYname 你应该很容易知道运行的结果,没错, ...