SQL 统计分组 Group By和Compute By的整理

news/2024/7/5 7:00:48

在日常的项目开发中数据统计方面大家都常常用到Groub By进行分组,可能很少人用Compute By吧,我今天也是第一次使用,以前没有写博客的习惯,只是把自己的经验都整理起来都保存到了YX笔记当中,就从这一篇开始吧,把自己的一些经验写出来,一方面可以让自己再梳理下以前的知识。本人菜鸟,大牛勿喷,不喜勿入!从不在意什么排名,也不在意什么评论的数量,any way,走我自己的路管你那么多!

好了,进入正题,比如说项目中你需要按类别统计商品的总价,或者因为多表连接之后你出现了重复的数据(当然你可以用开窗函数),貌似我想不出来还有其他的作用了,毕竟本人就是菜鸟一枚,有大牛知道的话能告知下。例:

有如下的商品数据:

想要按照类别查看价格的总和,ok!

Select t.GoodsType,SUM(t.Price)
From T_Goods t
Group By t.GoodsType
得到的结果

Group By就是分组,根据Group By后的字段名就行分组,若有多个字段就先根据第一个字段分组,再在满足第一个字段的子集中按照第二个字段再进行分组,依次类推。

再看看这个:

Select t.GoodsType,SUM(t.Price),t.Remark
From T_Goods t
Group By t.GoodsType,t.Remark

,这两个例子可以清楚的了解Group By 多个字段了吧!

这里插播一个知识点,我们大家都知道Group By 可以跟Having 和Where 连用,但是两者是有细微区别的,请看这段

Select t.GoodsType,SUM(t.Price) TotalPrice
From T_Goods t
Where t.Price>=20
Group By t.GoodsType
--Having SUM(t.Price) >=20
使用where的结果 VS Having的结果:
VS 

当然有些数据两个查询结果是相同的,但是两者确确实实地存在区别的,构造出这个数据我也试了几次,

where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。而having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

而Compute By 也是分组,与Group By的区别在于Compute By 可以显示出细节:

请看

Select * 
from T_Goods t
Order By t.GoodsType
Compute Max(t.Price),Min(t.Price),AVG(t.Price) By t.GoodsType

说实话我现在也没有在项目中用过Compute By,下面的统计行和数据行是什么关系,我也不是很清楚,求大神告知!



http://www.niftyadmin.cn/n/634844.html

相关文章

矩阵乘法(Strassen算法/C++实现)

问题:请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法。 思路一:暴力解法 直接根据数学中矩阵乘法的计算公式: 计算目标矩阵中各个元素的值。 //思路一:暴力解法 //矩阵乘法,3个for循环搞定 voi…

Why MVC is Better?(翻译)

(本文翻译自CodeProject上的一篇关于ASP.NET MVC的文章,原文地址:http://www.codeproject.com/Articles/821275/Webforms-vs-MVC-and-Why-MVC-is-better。注意文章有些地方出现的”MVC“术语指”ASP.NET MVC“,比如本文标题。本文…

SQL 游标的使用

我们都知道在关系数据库中,都是面向集合进行查询的,而游标却是化整为零,是按行查询的,举个例子比如说之前那个壕买了99台苹果6,他可以一次性就买了99台,这正是我们平常使用SQL的方式,他也可以分…

完美洗牌算法(2013年UC校招笔试、2016阿里实习生笔试)

题目详情:有个长度为2n的数组{a1,a2,a3,...,an,b1,b2,b3,...,bn},希望排序后{a1,b1,a2,b2,....,an,bn},要求时间复杂度O(n),空间复杂度0(1)的解法。 思路一:位置置换pefect_shuffle1算法 数组下标:1 2…

图像特征点匹配(视频质量诊断、画面抖动检测)

在视频质量诊断中,我们通常会涉及到“画面抖动”的检测。在此过程中就需要在视频中隔N帧取一帧图像,然后在获取的两帧图像上找出特征点,并进行相应的匹配。 当然了,这一过程中会出现很多的问题,例如:特征点…

MyEclipse下安装FreeMark插件

现在大多人人喜欢用FreeMark模板。但是这个模板在myeclipse或者是eclipse下却是不能只能提示,一大堆只是没有颜色区分的显示在哪里。万能天国总是有办法。 点我去官网下载(比较慢)我的CSDN资源下载(速度快 推荐 已配置好) 配置 如果你选择的是我的CSDN 资源下载直接…

WebForm运行的部分原理

首先WebForm即web窗体包含两个页面文件:aspx前台页面和cs后台页面文件。通过反编译器Reflector我们可以看到在Dll程序集中前台页面和后台页面分别生成了两个不同的类,而且前台页面aspx类继承于后台页面CS类。下面这个登陆的小例子是我们用的最多的: 在as…

从摄像头中读取图像 OpenCV

//(一) 从摄像头中读取图像并保存成视频 //图像类型 IplImage* #include "cv.h" #include "highgui.h" int main( int argc, char** argv ) { CvCapture* capture 0; IplImage* frame 0; capture cvCaptureFromCAM( 0 ); int fps25; //捕捉帧率 //do…