文档章节

SQL的分组理解

黑夜探路人
 黑夜探路人
发布于 2016/04/15 13:54
字数 683
阅读 57
收藏 2
SQL

由于现在一直是做的大数据相关的产品的开发,对SQL方面的要求又高了很多,之前做项目的时候,涉及到SQL方面的知识就只有CURD操作,也就是创建(Create)、更新(Update)、读取(Read)和删除(Delete)操作,现在我的上司要求我将更多的逻辑处理和操作放到SQL里面进行处理,所以现在对子查询、分组、关联等的理解就加深了点,为了能记住这些,并加深自己的理解,后面的一段时间我会将自己的一些笔记进行整理并分享出来。

首先说下分组

分组是将查询出来的结果集分成若干个小区域,然后对每个小区域进行数据处理

下面是一张原始数据表

经过Group By处理后

select 类别,sum(数量) as 数量之和名称 from A  group by 类别

返回的结果如下表,实际上就是分类汇总的结果。

注意点:

1、在select指定的字段要么就要包含在group by语句的后面,作为分组的依据,要么就要包含在聚合函数中(在存在聚合函数时,需要用到group by),至于聚合函数这块,留到以后再做详解

2、where和having的基本区别,因为做分组时,不可避免的要和where还有having打交道,所以这块要先做下区分。where在分组和聚集计算之前选取输入行(它控制哪些行进入聚集计算),而having在分组和聚集之后选取输入行。因此,where子句不能包含聚集函数,因为试图用聚集函数判断那些行将要输入给聚集运算是没有意义的,相反,having子句总是包含聚集函数。

Group By All

select 类别, 摘要, sum(数量) as 数量之和
from A
group by all 类别, 摘要
指定“摘要”字段,其原因在于“多列分组”中包含了“摘要字段”,其执行结果如下表

“多列分组”实际上就是就是按照多列(类别+摘要)合并后的值进行分组,示例4中可以看到“a, a2001, 13”为“a, a2001, 11”和“a, a2001, 2”两条记录的合并。

SQL Server中虽然支持“group by all”,但Microsoft SQL Server 的未来版本中将删除 GROUP BY ALL,避免在新的开发工作中使用 GROUP BY ALL。Access中是不支持“Group By All”的,但Access中同样支持多列分组,上述SQL Server中的SQL在Access可以写成

select 类别, 摘要, sum(数量) AS 数量之和
from A
group by 类别, 摘要
 

 

© 著作权归作者所有

黑夜探路人
粉丝 5
博文 26
码字总数 25102
作品 0
贵阳
程序员
私信 提问
ORACEL学习--理解over()函数

二、理解over()函数 1.1、两个order by的执行时机 分析函数是在整个sql查询结束后(sql语句中的order by的执行比较特殊)再进行的操作, 也就是说sql语句中的order by也会影响分析函数的执行结果...

spinachgit
2018/10/17
0
0
group by 深入总结

一、不兼容的语法问题。 先看使用如下sql:SELECT count(),town FROM 结果会报错。从这里涉及到sql的一个原则:值的集合与一个行mysql认为是不兼容的。这里,count()的结果是一个值。而town列...

wangtaotao
2011/02/23
0
0
SQL语句where,Group By,having order by 的详细使用方法

Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进...

不最醉不龟归
2016/09/21
20
0
大数据之Linux早课9.26

1.排序语法 默认是降序吗 2.限制多少行语法 3.分组函数有哪些 4.分组语法,谈谈你们的理解有哪些 5.left join谈谈你们的理解 6.(拓展题)高级的高级的SQL那个文件做了没? 7.谈谈对子表的理解...

hnairdb
2018/10/17
0
0
LINQ简记(3):子句

LINQ查询表达式的子句如select,where,from等都是比较简单的子句,相信各位多练习练习,再结合MSDN的例子,基本上是可以理解的,因此,本文只挑几个有代表性的,以及有些难理解的子句来简述...

junwong
2012/04/18
115
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
5
0
GIL 已经被杀死了么?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/8KvQemz0SWq2hw-2aBPv2Q 花下猫语: Python 中最广为人诟病的一点,大概就是它的 GIL 了。...

豌豆花下猫
昨天
6
0
git commit message form

commit message一般包括3部分:Header、Body、Footer。 <type>(<scope>):<subject>blank line<body>blank line<footer> header是必需的,body、footer可以省略。 header中type、subject......

ninjaFrog
昨天
5
0
聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部