sql group by 理解
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 理解的更多相关文章
- SQL Server内存理解的误区
SQL Server内存理解 内存的读写速度要远远大于磁盘,对于数据库而言,会充分利用内存的这种优势,将数据尽可能多地从磁盘缓存到内存中,从而使数据库可以直接从内存中读写数据,减少对机械磁盘的IO请求 ...
- SQL GROUP BY 语句
合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句. GROUP BY 语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组. SQL GROUP BY 语法 ...
- SQL Server :理解BCM页
原文:SQL Server :理解BCM页 今天我们来讨论下批量更改映射(Bulk Changed Map:BCM)页,还有大容量日志恢复模式( bulk logged recovery model ...
- SQL Server :理解DCM页
原文:SQL Server :理解DCM页 我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map ...
- SQL Server :理解IAM 页
原文:SQL Server :理解IAM 页 在以前的文章里,我们讨论了数据页,GAM和SGAM,还有PFS页.今天我们一起来讨论下索引分配映射(Index Allocation Map:IAM)页. ...
- SQL Server :理解Page Free Space (PFS) 页
原文:SQL Server :理解Page Free Space (PFS) 页 我们已经讨论了GAM与SGAM页,数据页(Data Page) ,现在我们来看下页面自由空间页(Page Free S ...
- SQL Server :理解GAM和SGAM页
原文:SQL Server :理解GAM和SGAM页 我们知道SQL Server在8K 的页里存储数据.分区就是物理上连续的8个页.当我们创建一个数据库,数据文件会被逻辑分为页和区,当用户对象创建时 ...
- SQL Server :理解数据记录结构
原文:SQL Server :理解数据记录结构 在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下 ...
- SQL Server :理解数据页结构
原文:SQL Server :理解数据页结构 我们都很清楚SQL Server用8KB 的页来存储数据,并且在SQL Server里磁盘 I/O 操作在页级执行.也就是说,SQL Server 读取或 ...
随机推荐
- 在DDwrt下对Firmware操作的一些技巧
[备注]这里是对ddwrt的操作,事实上,对openwrt同样也适用. 基础知识: 1.MTD MTD是Memory Technology Devices的缩写,它主要提供了一个raw Flash设备 ...
- XSD笔记
XML Schema 是基于 XML 的 DTD 替代者. XML Schema 可描述 XML 文档的结构. XML Schema 语言也可作为 XSD(XML Schema Definition) ...
- HDU 4388 To the moon
传送门 To the moon Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 利用php制作简单的文本式留言板
del.php 代码如下: <html><head ><meta charset="utf-8"><title>我的留言板</ ...
- python模块xlrd安装-处理excel文件必须
我安装了很久,网上查了很多资料,但都不太适合,综合 了一下,再写一写,希望有用... 官网下载xlrd:官网xlrd下载地址, 真的很难下,我用讯雷,有时候断断续续 下面是我的百度网盘地址,分享出来, ...
- HTML5学习总结-11 IOS 控件WebView显示网页
一 加载外部网页 1.使用UIWebView加载网页 运行XCode 新建一个Single View Application . 2 添加安全消息 添加以下消息到项目的 Info.plist &l ...
- UML图例
概述 常用建模方法:BOOCH.OMT.OOSE等 统一建模语言:UML(Unified Modeling Language) 软件开发过程:RUP(Rational Unified Process) ...
- 根据wsdl文件生成webservice 的.cs文件 及 生成dll C#调用
Visual Studio 2013->Visual Studio Tools->VS2013 开发人员命令提示 命令行输入 wsdl E:\WS.wsdl /out ...
- JavaWeb学习笔记——JavaBean的保存范围和删除
- JavaWeb学习笔记——jsp:setproperty和getproperty