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

时间: 2024-10-20 11:09:04

group by 两个或以上条件的分析的相关文章

关于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),

sql把两值之和当作条件进行查询

目的:把表中两个字段之和作为where条件进行过滤查询 //查询在没有过期的记录select a,b from test where a+b>now();// a:存入时间 b:有效期时间段 进行以上查询后,sql会报错. 但是,只要把上面的sql放入到代码中,将now()换成对应语言所获取当前时间戳的方法(如php中 time() ),执行,完美OK! 分析:在sql中直接这样运行,sql会把now()理解为当前的格式化时间,因此,在a+b后直接理解成了普通字符串,并非所理解的时间戳概念,所以

Group by 两表联查取另一表与之关联数据的总数

使用group by 需要查询的字段 必须要放在group by 后面 SELECT U.UserLotterySn,count(W.Userlotterysn) as WinCount,U.ActivityCode,CertType,CertNumber,LotterySumCount,LotteryCounted,IsBigWin,U.CreateBy,U.CreateDateFROM T_UserLottery U JOIN T_WinningUser W on W.UserLottery

应聘条件本质分析

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 专栏申请有一段时间了,不过一直没有想好,如何去写相应的内容. 想法源于之前招聘的过程中,很多开发人员总有这样或那样的局限,尤其是,对于初级要求,往

C/S和B/S两种架构区别与优缺点分析

C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构 1. 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据:另一种是Socket服务器端,服务器端的程序通过Socket与客户端的程序

ListView+CheckBox两种解决方式及原因分析

近期在用ListView+CheckBox搞一个item选中的项目,我将CheckBox的focus设置为false,另我大喜的是,CheckBox居然能够选中(窃喜中),这么简单就搞定了,由于数据量较小,也没有发现什么问题. 后来数据多了. 页面须要滑动了, 发现了一个奇怪的问题,前面明明选中了,而再次滑动回去的时候居然变成未选中状态! 这是我刚開始写的那段错误的代码: @Override public View getView(int position, View convertView,

不借助第三个变量实现两个变量交换及原理分析

通常的交换两个变量a,b的过程为 var temp; temp=a; a=b; b=temp; 需借助上面的第3个临时变量temp. 无需借助第3个临时变量交换两个变量a,b d的方法: 逻辑运算(异或) 下面的异或运算可以实现a,b的交换,而无需借助第3个临时变量: a = a ^ b; b = a ^ b; a = a ^ b; 这个交换两个变量而无需借助第3个临时变量过程,其实现主要是基于异或运算的如下性质: 1.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0 2.任意一个变量

关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup

读者可能会奇怪我标题怎么理成这个鬼样子,主要是单单写 lxml 与 bs4 这两个 py 模块名可能并不能一下引起大众的注意,一般讲到网页解析技术,提到的关键词更多的是 BeautifulSoup 和 xpath ,而它们各自所在的模块(python 中是叫做模块,但其他平台下更多地是称作库),很少被拿到明面上来谈论.下面我将从效率.复杂度等多个角度来对比 xpath 与 beautifulsoup 的区别. 效率 从效率上来讲,xpath 确实比 BeautifulSoup 高效得多,每次分步

CVE-2015-1530 ,CVE-2015-1474 两个android整数溢出漏洞 分析

An integer overflow in Android media could be exploited to get media_server permission(CVE-2015-1530) Integer overflow leading to heap corruption while unflattening GraphicBuffer In Android(CVE-2015-1474)