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 读取或 ...
随机推荐
- [NOIP2014] 提高组 洛谷P2312 解方程
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
- C#检测驱动是否安装的问题
#region 检测CCD驱动是否安装成功 string path = @"C:\WINDOWS\system32\drivers\UsbCamIF.sys"; //驱动的默认安装 ...
- [Android]Message,MessageQueue,Looper,Handler详解+实例
转http://www.eoeandroid.com/forum-viewthread-tid-49595-highlight-looper.html 一.几个关键概念 1.MessageQueue: ...
- html内容写入到文件中的时候出现‘TypeError: expected a character buffer object’错误
代码如下: with open('ryf.md', 'a') as f: f.write(content) # content是html内容 原因是写入文件要求写入内容是str,直接转换成str即可, ...
- Linux以外的开源操作系统大汇总
开源操作系统即公开源代码的操作系统软件,它遵循开源协议使用.编译和发布.自由和开放源代码软件中最著名的是Linux,它是一种类Unix的操作系统.Linux可安装在各种计算机硬件设备中,比如手机.平板 ...
- C#MVC路由配置 之 动态请求伪装静态Json来欺骗CND
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.Ignore ...
- IP-Address TextBox
http://www.codeproject.com/Articles/4693/IP-Address-TextBox 可以下载试用效果.个人感觉功能很强大,但输入时让人不太舒服.可以参考. ntro ...
- C#----操作应用程序配置文件App.config
对配置文件的一些疑问: 在应用程序的目录下,有两处值得注意的地方,一个是应用程序根目录下的App.config文件,和bin\debug\name.exe.config 或者 bin\Release\ ...
- 改造rm命令为mv
:刚在群里面看到小伙伴误操作把服务器上重要的文件给删掉了,于是google了下,找到一篇文章把rm命令改造成mv命令,源博客如下:http://blog.csdn.net/dataspark/arti ...
- thinkphp模板引擎
$this->assing('result'.$result) html页面代码 <foreach name='result item='vo'> <div>{$vo[' ...