`
uule
  • 浏览: 6352208 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

关于group by 两个或以上条件的分析

 
阅读更多

首先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

第三次 按照 c列来分组 代码如下
select count(a),c from test group by c


第四次 按照 b c两个条件来分组
select count(a),b,c from test group by b,c

第五次 按照 c b 顺序分组
select count(a),b,c from test group by c,b

可以看出 group by 两个条件的工作过程:

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


来源:http://hi.baidu.com/w_xiaofeng20xx/item/05a2bf154020b97a1009b5e0

  • 大小: 7.4 KB
  • 大小: 2.9 KB
  • 大小: 2.7 KB
  • 大小: 4.1 KB
  • 大小: 4.1 KB
分享到:
评论
5 楼 CmdSmith 2017-02-17  
 
4 楼 wouldmissy 2016-07-25  
太棒了, 感谢。  不过,如果有加上where条件的sql就更好了
例:再添加一个d列,d列的内容为X Y X Y X Y X Y
select count(a) from test where d = y group by b,c

会是什么样的结果呢?
3 楼 di1984HIT 2016-03-18  
xuexile xuexile
2 楼 Xujian0000abcd 2015-12-12  
写的非常清楚
1 楼 wangjinbo 2015-09-30  
阿尔法分发烧

相关推荐

    group by + order by

    在数据库查询语言 SQL(Structured Query Language)中,`GROUP BY` 和 `ORDER BY` 是两个非常重要的子句,它们可以帮助我们更高效地管理和展示数据。 #### GROUP BY 子句 `GROUP BY` 主要用于将数据表中的数据...

    SQL GROUP BY 语句详解

    这意味着你可以根据两个或更多列的值来分组数据。例如,如果我们不仅关心客户,还关心订单日期,可以这样写: ```sql SELECT Customer, OrderDate, SUM(OrderPrice) FROM Orders GROUP BY Customer, OrderDate; ```...

    mysql使用GROUP BY分组实现取前N条记录的方法

    GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法。 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 代码如下:SELECT a.id,a.SName,a.ClsNo...

    简单讲解sql语句中的group by的使用方法

    SQL中的`GROUP BY`语句是数据库查询中的一个重要部分,它用于将数据按照一个或多个列的值进行分组,以便对每个组执行聚合函数,如`SUM`、`COUNT`、`AVG`和`MAX`等。下面我们将详细讨论`GROUP BY`的使用方法及其相关...

    on与where、group by的用法

    `ON`条件主要用于定义两个或多个表之间的连接条件。它是生成临时表的基础,即在执行连接操作时,数据库会根据`ON`条件构建一张临时表。无论`ON`条件是否为真,都会保留左侧表的所有记录,这也是`LEFT JOIN`的核心...

    SqlServer中Group By高级使用--Inner Join分组统计

    Inner Join用于从两个或更多表中返回匹配行,即两个表中存在对应关系的行。假设我们有一个产品表和一个订单表,我们可以使用Inner Join来获取特定客户的所有订单: ```sql SELECT Orders.CustomerID, Customers....

    Sql聚合函数和group by的关系详解.doc

    Sql 聚合函数和 group by 是 SQL 语言中两个非常重要的概念,它们之间存在紧密的联系。那么,什么是聚合函数?什么是 group by?它们之间的关系是什么?在本文中,我们将详细地解释 Sql 聚合函数和 group by 的关系...

    Python中的groupby分组功能的实例代码

    确实,groupby是数据分析中不可或缺的一个功能,它让处理复杂数据集变得更加高效和直观。 总结而言,Python中的groupby分组功能是Pandas库非常重要的一个功能,它能够根据一个或多个字段的值将数据集划分为不同的组...

    处理group by 查询速度太慢的问题 数据量大.doc

    在本实例中,仅仅设置 device_id 和 product_id 两个字段的索引是不够的,需要将 log_time 字段一起设置为联合索引,才能达到理想的查询速度。 知识点5:Query 优化的思路 在优化查询时,需要遵循一定的思路。首先...

    group by 语法大全,内附列子

    通过添加`HAVING COUNT(*) = 2`条件,可以筛选出那些恰好有两个成绩记录的学生。 ##### 示例4:按姓名分组,计算每个学生的总成绩 ```sql SELECT name, SUM(score) AS TotalScore FROM score_table GROUP BY name;...

    group by 后 使用 rollup 子句 总结.doc

    例如,如果在 `GROUP BY` 语句后面指定了两个列 `column1` 和 `column2`,那么 `WITH ROLLUP` 将会产生以下几类分组: 1. 按 `column1` 和 `column2` 进行分组。 2. 按 `column1` 进行分组(忽略 `column2`)。 3. ...

    Linq中GroupBy方法的使用总结.

    Linq 中的 GroupBy 方法是对数据进行分组的操作,通常用于对一个或多个字段进行分组,求其总和、均值等。下面我们来详细介绍 Linq 中 GroupBy 方法的使用。 一、基本使用 在 Linq 中,GroupBy 方法的基本使用方式...

    处理group by 查询速度慢的问题.docx

    在优化之前,此表仅对`device_id`和`product_id`两个字段设置了联合索引。执行上述SQL查询耗时接近40分钟。这一问题引起了我们的关注,并开始尝试找出原因并寻找解决方案。 #### 优化过程 **初步测试** 起初,...

    在SQL语言中用Group By子句实现除法.pdf

    在这个例子中,`SUM(salary) OVER ()`计算整个数据集的总工资,而`COUNT(*) OVER ()`计算总行数,两个窗口函数结合就可以计算每个员工工资与公司总平均工资的比例。 当然,在一些数据库系统中,可能需要结合case...

    SQL问题详解之_having_Group by

    总之,GROUP BY和HAVING子句是SQL中的强大工具,它们是数据分析师和数据库管理员在处理大量数据时不可或缺的部分。通过对数据进行有效的分组和筛选,我们可以更深入地理解数据的结构和模式,从而做出更好的决策。在...

    mssql+group by 分页例子

    这个存储过程接受两个参数,`@PageIndex`和`@PageSize`,分别表示当前页和每页的记录数。然后,它计算出开始和结束行号,并执行分页查询。 总的来说,结合`GROUP BY`和分页技术,可以在处理大型数据集时提供高效且...

    GROUP BY子句(rollup,cube,grouping sets)实例说明

    GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的三种样式:GROUP BY、GROUP BY ROLLUP、GROUP BY CUBE、GROUP BY GROUPING SETS。 1. GROUP BY 语句 GROUP BY 语句是最基本的分组语句,它可以根据...

    C# List多条件聚合查询方法.txt

    C# List多条件查询聚合查询,List条件查询Where与GroupBy聚合查询

    SQL语句中Group BY 和Rollup以及cube用法

    ### SQL语句中Group BY 和Rollup以及...通过以上示例和解释,我们可以更好地理解SQL中`GROUP BY`、`ROLLUP`和`CUBE`的作用和用法。在实际工作中,根据需求选择合适的分组方式能够有效地提高数据处理的效率和灵活性。

    用C#实现对DataTable的JOIN,GROUP BY,FILTER,UNIONALL,DISTINCT

    用C#实现对DataTable的JOIN,GROUP BY,FILTER,UNIONALL,DISTINCT

Global site tag (gtag.js) - Google Analytics