- 浏览: 6303146 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
关于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
评论
例:再添加一个d列,d列的内容为X Y X Y X Y X Y
select count(a) from test where d = y group by b,c
会是什么样的结果呢?
发表评论
-
count(*),count(1)和count(字段)的区别
2019-04-04 11:19 5519很多人认为count(1)执行的效率会比count(*)高 ... -
如何避免死锁
2018-12-20 15:31 3323一句话一张图说明银行 ... -
mysql多表更新
2018-12-13 11:18 1340Mysql update多表联合更新 update ... -
SQL优化-慢查询+explain查询
2018-11-27 17:12 4659利用EXPLAIN分析sql语句 ... -
关系型数据库和非关系型数据库区别
2018-08-29 17:46 4845SQL与NoSQL(关系型与非关系型)数据库的区别 Nos ... -
分布式CAP原则
2018-08-29 14:15 2253CAP原则 - 百度百科 分布式CAP定理,为什么不能同 ... -
数据库索引B树、B+树、Hash索引
2018-08-27 17:44 15201程序员小灰 - 漫画: ... -
MYSQL主从复制
2018-08-23 17:53 1072MySQL主从复制与主主复制 MySQL集群(一)之主从 ... -
char/varchar/nvarchar的区别及其各自的使用场景
2018-08-20 10:58 2373MySQL数据库char与varchar ... -
MVCC
2018-08-20 10:34 3477轻松理解MYSQL MVCC 实现机制 1.1 什 ... -
MYSQL保留小数
2018-06-12 11:44 3407mysql保留小数 1、调 ... -
MYSQL数据库死锁的原因和解决方法
2018-05-07 18:15 5627Mysql并发时经典常见的死锁原因及解决方法 总结线上遇 ... -
limit 20000 加载很慢怎么解决
2018-05-07 17:16 12192如何优化Mysql千万级快速分页 MYSQL分页limi ... -
MySQL存储引擎InnoDB和MyISAM对比分析
2018-04-27 11:32 1343InnoDB存储引擎 InnoDB是一个事务型的存储引擎 ... -
数据库锁分类
2018-04-25 18:00 1586一般可以分为两类, ... -
sql查询20到30条记录
2018-04-24 15:36 47891. MySql查询 [sql] view pl ... -
Case When
2018-01-24 09:50 1736mysql嵌套CASE WHEN MySQL ... -
Mysql for update行级锁、表级锁、页级锁
2017-01-16 15:45 5440MySQL中SELECT+UPDATE处理并发更新问题解决 ... -
mysql delete删除记录数据库空间不减少问题解决方法
2016-11-16 16:06 3472今天空间商告诉我数据 ... -
mysql删除指定前缀的表
2016-11-10 11:45 1961批量删除指定前缀表: Select CONCAT( ...
相关推荐
GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法。 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: 代码如下:SELECT a.id,a.SName,a.ClsNo...
9.关于查询语句的SELECT子句为SELECT A,B,C *D,则不能使用的GROUP BY子句是(GROUP BY A) 10.建立索引的优点之一是(保证数据的唯一性、加快数据检索速度、加速表与表之间的连接、减少查询中分组和排序的时间、提高...
满足GROUP BY子句的最一般的方法是扫描整个表并创建一个新的临时表,表中每个组的所有行应为连续的,然后使用该临时表来找到组并应用累积函数(如果有)。在某些情况中,MySQL能够做得更好,即通过索引访问而不用创建...
在MySQL 中,GROUP BY 的实现同样有多种(三种)方式,其中有两种方式会利用现有的索引信息来完成 GROUP BY,另外一种为完全无法使用索引的场景下使用。下面我们分别针对这三种实现方式做一个分析。 1、使用松散...
层及索引levels,刚开始学习pandas的时候没有太多的操作关于groupby,仅仅是简单的count、sum、size等等,没有更深入的利用groupby后的数据进行处理。近来数据处理的时候有遇到这类问题花了一点时间,所以这里记录...
切片分组 ,提供了用于通过函数定义的组高效地遍历slice和str的功能,该函数指定两个元素是否在同一组中。... use slice_group_by :: GroupBy;let slice = & [ 1 , 1 , 1 , 3 , 3 , 2 , 2 , 2 ];let mut iter = slic
本文实例讲述了Django中使用group_by的方法。分享给大家供大家参考。具体分析如下: 在Django中怎样使用group_by语句呢?找了很多资料,都没有看到好的,在这里分享两种方法给大家: 首先,我们先建一个简单的模型。...
1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、查询出所有数据进行分组之后,和重复数据...
查询有多个员工的工资不低于2000的部门编号(就是说如果一个部门的员工大于2000的人数有两个或两个以上就查询出来) sql语句: select [DEPARTMENT_ID],count([SALARY]) from [DEPARTMENT] where [SALARY]>'2000' ...
切换到5.7之后,突然发现原来的一些sql运行都报错,错误编码1055,错误信息和sql_mode中的“only_full_group_by“有关,到网上看了原因,说是mysql5.7中only_full_group_by这个模式是默认开启的 解决办法大致有两种...
[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP ...
前言: group by函数后取到的是分组中的第一条数据,但是我们有时候需要取出各分组的最新一条,该怎么实现呢? 本文提供两种实现方式。 一、准备数据 ... 二、三种实现方式 1)先order by之后再分组: ...
使用 pymongo 进行 group by 操作有两种基本方式,他们都是 mongodb 的原生命令,于 Collection 对象上调用。 def aggregate(self, pipeline, **kwargs): def group(self, key, condition, initial, reduce, ...
我们先来做个试验,验证这种情况。这是表结构,初始化两条记录,然后试验: 代码如下:root@localhost : plx 10:25:10> show create table t2\G*************************** 1. row ***************************
LINQ关键字 from 指定数据源和范围变量 where 根据布尔表达式(由逻辑与 或 等组成)从数据源中筛选元素 ...join 按照两个指定匹配条件来联接俩个数据源 let 产生一个用于查询表达式中子表达式查询结果的范围变量
进阶5:分组查询 语法: select 查询列表 from 表 【where 筛选条件】 group by 分组的字段 ...group by 子句支持单个字段分组,多个字段分组、函数、表达式、可以接排序放在最后 分组函数: count sum max
假设有两个表,一个是订单表(Orders),一个是订单详情表(OrderDetails)。订单表(Orders)包含以下字段:订单号(OrderID)、客户ID(CustomerID)、订单日期(OrderDate)。订单详情表(OrderDetails)包含以下...
在“图书”表中,增加两个字段,分别为“数量”和“购买日期”。在“借阅”表中增加一个“还书日期”字段。 6、用企业管理器在上述三个表中输入部分虚拟数据。 7、在查询分析器中实现基于单个表的查询 ① select ...
delete from people where peopleId in (select peopleId from people group by peopleId having count (peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId...