order by是对字段进行排序,
group by 是对字段进行分类,在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

比如,有一个表tt:
    A       B
   1       aa
   2       nnn
   3      fhfh
   3      fdgdfg
group by 有一个原则,就是 select 后面的所有列中,没有使用组函数的列,必须出现在 group by 后面。为什么有这个规则,因为,按group by进行分组的话,能够产生唯一的值,组函数,也叫多行函数,就是给我多条记录,我只会产生一个输出。因此,如果没出现在主函数的列里,也没出现在group by后面,那么,有可能那个字段产生不是唯一的值,就没法一一对应匹配

组函数很多:avg, sum, max, min, count....组函数,也叫多行函数,就是给我多条记录,我只会产生一个输出。

例如:

如果,比如,我要是写个sql语句:select A,B from tt group by A,这条语句里,没有使用组函数,A,B都没出现在组函数里,在group by 中也没出现,现在按照A来分组,对A来说,分组后为:1,2,3,可是,对于的B字段,产生的值不唯一,因为A的值为3的时候,B有两条记录,因此,,B没法跟A分组后来匹配,
得出的结果有问题:
    A       B
   1       aa
   2       nnn
   3      fhfh
但是,如果我改成group by A, B,则是对A,B的组合的唯一来分组,得出的结果就是对的。
 
如果select A,count(B)  from tt group by A,结果为:
A     count(B)
1        1
2       1
3       2
A没出现在聚合函数count(B)里,但是,出现在了group by后面,这样,我对A进行分组,为1,2,3,我Count(B),得出的也是唯一的,因此,可以匹配。
对于这点,仔细理解理解,

文章来自:http://blog.163.com/xiaopengyan_109/blog/static/149832173201081983042803/

sql group by 理解的更多相关文章

  1. SQL Server内存理解的误区

    SQL Server内存理解 内存的读写速度要远远大于磁盘,对于数据库而言,会充分利用内存的这种优势,将数据尽可能多地从磁盘缓存到内存中,从而使数据库可以直接从内存中读写数据,减少对机械磁盘的IO请求 ...

  2. SQL GROUP BY 语句

    合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句. GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 ...

  3. SQL Server :理解BCM页

    原文:SQL Server :理解BCM页 今天我们来讨论下批量更改映射(Bulk Changed Map:BCM)页,还有大容量日志恢复模式( bulk logged recovery model  ...

  4. SQL Server :理解DCM页

    原文:SQL Server :理解DCM页 我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map ...

  5. SQL Server :理解IAM 页

    原文:SQL Server :理解IAM 页 在以前的文章里,我们讨论了数据页,GAM和SGAM,还有PFS页.今天我们一起来讨论下索引分配映射(Index Allocation Map:IAM)页. ...

  6. SQL Server :理解Page Free Space (PFS) 页

    原文:SQL Server :理解Page Free Space (PFS) 页 我们已经讨论了GAM与SGAM页,数据页(Data Page) ,现在我们来看下页面自由空间页(Page Free S ...

  7. SQL Server :理解GAM和SGAM页

    原文:SQL Server :理解GAM和SGAM页 我们知道SQL Server在8K 的页里存储数据.分区就是物理上连续的8个页.当我们创建一个数据库,数据文件会被逻辑分为页和区,当用户对象创建时 ...

  8. SQL Server :理解数据记录结构

    原文:SQL Server :理解数据记录结构 在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下 ...

  9. SQL Server :理解数据页结构

    原文:SQL Server :理解数据页结构 我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或 ...

随机推荐

  1. sql server 判空查询

    SELECT * FROM tableName WHERE columnName IS NOT NULL --排除空值 SELECT * FROM tableName WHERE ISNULL(col ...

  2. POJ 3617 Best Cow Line (贪心)

    Best Cow Line   Time Limit: 1000MS      Memory Limit: 65536K Total Submissions: 16104    Accepted: 4 ...

  3. 【项目】iOS - 使用UIWebView占用内存过大

    通过其他博主介绍的解决这个问题的博客: http://blog.techno-barje.fr//post/2010/10/04/UIWebView-secrets-part1-memory-leak ...

  4. 捉襟见肘之UIScrollView 【一】

    参考地址:http://segmentfault.com/a/1190000002412930 另一个优秀的UIScrollView实践文章地址:http://tech.glowing.com/cn/ ...

  5. 【原】javascript数组操作

    继续我的第二遍<javascript高级程序设计第三版>,今天要做的笔记是array 一.数组的操作 1.数组的创建: var colors= new Array(); //创建一个数组 ...

  6. 自然语言15.1_Part of Speech Tagging 词性标注

    QQ:231469242 欢迎喜欢nltk朋友交流 https://en.wikipedia.org/wiki/Part-of-speech_tagging In corpus linguistics ...

  7. 10月14日下午MySQL数据库基础

    数据库基础 类型: 1.varchar:字符串,用于姓名班级,地址等,地址一般长50,姓名长20 2.int:整数,用于成绩,序号等 3.float:小数 4.bit:布尔型,用于性别等 5.时间也用 ...

  8. JavaWeb学习笔记——Tomcat配置

    使用的Tomcat版本是apache-tomcat-6.0.20 详细的环境变量配置参考<windows 7系统安装与配置Tomcat服务器环境> 网址为http://jingyan.ba ...

  9. ecshop商品-》获取促销商品

    lib_goods.php->function get_promote_goods(){} /** * 获得促销商品 * * @access public * @return array */ ...

  10. 在Razor中如何引入命名空间?("import namespace in razor view") 【转】

    原文链接 找了半天,原来如此: 在aspx中: <%@ Import Namespace = "Martian.Areas.SFC.Models" %><%@ I ...