可以这样去理解group by和聚合函数 转自 http://www.cnblogs.com/wiseblog/articles/4475936.html 写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢?不过最后还是转过来了,简单写写吧,大牛们直接略过吧. =…
有这样一个表数据: 学生姓名,学生手机号,上课日期,上课科目 科目分: 语文.数学.英语.计算机 要求统计一个这样子的结果: 学生姓名,学生手机号,第一次上课日期,迄今一共上了多少节课,上的最多的科目是,该科目一共上了几节 本来想着简单,那不就是group by一下,一个子查询l不就解决了,想法如下: select 学生姓名,学生手机号,min(上课日期),上课科目,count(上课科目) as 该科目一共上了几节 form 表 group by 学生姓名,学生手机号,上课科目 以上面的查询结果…
(本文一切基于SQL SERVER 2008 R2) 先来看一个语句执行过程发生的错误提示: 消息 8120,级别 16,状态 1,第 2 行 选择列表中的列 'SC.CNO' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中. 消息 8120,级别 16,状态 1,第 2 行 选择列表中的列 'SC.CNO' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中. 元数据库为Stu_C,含有三个表,S.SC.C.执行的语句如下: use Stu_C select SNO,c…
写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢?不过最后还是转过来了,简单写写吧,大牛们直接略过吧. =========正文开始=========== 先来看下表1,表名为test: 表1 执行如下SQL语句: SELECT name FROM test GR…
group by 的基本用法 group by做为分组来使用,后面为条件,可以有多个条件,条件相同的为一组,配合聚合函数进行相关统计.在不同数据库中用法稍有不同,这里只测试mysql和oracle. 1.准备好一张数据表:               mysql                                                        oracle 2.首先以name为分组条件: SELECT * FROM person GROUP BY `name`; 在m…
http://www.cnblogs.com/wuguanglei/p/4229938.html 写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢?不过最后还是转过来了,简单写写吧,大牛们直接略过吧. =========正文开始=========== 先来看下表…
1.在使用 GROUP BY 子句时,Select列表中的所有列必须是聚合列(SUM,MIN/MAX,AVG等)或是GROUP BY 子句中包括的列.同样,如果在SELECT 列表中使用聚合列,SELECT列表必须只包括聚合列,否则必须有一个GROUP BY 子句.例如: select customerid,salespersonid,count(*) from sales.salesorderheader group by customerid,salespersonid order by c…
1.order by 默认按升序排列(asc/desc),多字段排序 order by 字段 排序方式,字段2 排序方式,..: 在分组排序中,排序是对分组后的结果进行排序,而不是在组中进行排序. select * from stu order by score desc,name asc;//优先score ,然后name排序 2.limit 在语句表示,截取记录的条数.一般和order by 配合使用(大数据下Limit使用) limit[offset][N] offset: 偏移量   N…
1.在oracle中 select * from Table group by id 会报错. 会报不是group by 表达式.为什么一定不能是 * ,而必须是分组的列或者某个列的聚合函数. 在mysql中不会出现这样的问题.原因如下: 1.新建测试表test:表一 执行如下SQL语句:select name from test group by name.这是没问题的.:表二 2.可是为了能够更好的理解“group by”多个列“和”聚合函数“的应用,执行过程中我们 增加一个虚构的中间表:虚…
知道group by是进行分组查询,但是一直觉得对其理解得不够透彻,在网上扒了一篇文章,我认为写得非常好. 为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢? 先来看下表1,表名为test: 执行下面语句: SELECT name FROM test GROUP BY name 你应该很容易知道运行的结果,没错,就是下表2: 为了能够更好的理解"group by&qu…