Oracle数据库(四)函数的介绍_oracle product-程序员宅基地

技术标签: Oracle  数据库  sql  

1、聚合函数的使用:
函数 说明
--------------------------------------------------------------------
avg(x) 返回 x 的平均值
--------------------------------------------------------------------
count(x) 返回一个包含 x 的查询返回的行数
--------------------------------------------------------------------
max(x) 返回 x 的最大值
--------------------------------------------------------------------
min(x) 返回 x 的最小值
--------------------------------------------------------------------
median(x) 返回 x 的中间值
--------------------------------------------------------------------
stddev(x) 返回 x 的标准差
--------------------------------------------------------------------
sum(x) 返回 x 的和
--------------------------------------------------------------------
variance(x) 返回 x 的方差

		· 可以对数字 、 日期 和 字符串 使用count() , max() 和 min() 函数
		· 聚合函数会忽略空值 。这是因为空值说明该值未知,因此不适用于聚合函数的计算
		· distinct 关键字可以与聚合函数一起使用,这样可以在聚合函数的计算中排除重复项

2、对行进行分组:
1)使用 group by 子句对行进行分组
group by子句可以用于将行分组为具有相同列值的多个部分。下面的查询将 products 表中的行分组为 product_type_id 相同的部分。
select product_type_id from products group by product_type_id ;
PRODUCT_TYPE_ID
---------------
1

		              2
		              4
		              3
	(1)在分组中使用多列
		在 group by 子句中可以使用多列。例如下面这个表中就包含了purchases表中的 product_id 和 customer_id。
		select product_id , customer_id 
		from purchases 
		group by product_id , customer_id ;
	(2)行分组使用聚合函数
		· 使用 group by 子句将行分组为 product_type_id 相同的部分
		· 使用avg()函数对包含一组行的每个部分计算平均价格。
			select product_type_id , avg(price) 
			from products
			group by product_type_id ;
		select product_type_id , count(product_id) from products group by product_type_id ;
			PRODUCT_TYPE_ID COUNT(PRODUCT_ID)
			--------------- -----------------
			              1                 2
			                                1
			              2                 4
			              4                 3
			              3                 2
		select product_type_id , count(product_type_id) from products group by product_type_id ;
			PRODUCT_TYPE_ID COUNT(PRODUCT_TYPE_ID)
			--------------- ----------------------
			              1                      2
			                                     0
			              2                      4
			              4                      3
			              3                      2
2)使用 order by 子句对组进行排序:
	默认情况下,group by 子句会根据分组列的值按照升序次序对昂进行排序。
	select product_type_id , count(product_id)
	from products
	group by product_type_id
	order by count(product_id);
		PRODUCT_TYPE_ID COUNT(PRODUCT_ID)
		--------------- -----------------
		                                1
		              1                 2
		              3                 2
		              4                 3
		              2                 4
3)调用聚合函数的错误用法:
	如果查询中包含一个聚合函数,而所选择的列并不在聚合函数中,那么这些列必须在 group by 子句中。
	select product_type_id , avg(price) from products ;
	这个错误之所以出现在这里,是因为数据库不知道怎么处理结果集中的product_type_id列
4)使用 having 子句过滤行分组:
	having 子句用于过滤行分组 , 它可以放置于 Group By 子句之后
	select .......
	from ....
	where.....
	group by ......
	having ......
	order by .....
&&注意:
	group by 子句可以不和 having 子句一起使用 , 但是 having 必须与 group by 子句一起使用。
	PS:假设要查看平均价格高于$20的产品类型,可以按照如下价格进行:
		select product_type_id , avg(price)
		from products 
		group by product_type_id
		having avg(price) > 20 ;
		
		select product_id
		from products
		where price > 10 
		group by product_id ;
5)组合使用 where 和 group by  子句:
	group by和 having 子句可以再同一个查询中一起使用 。这样使用时,where 子句首对返回行进行过滤,然后 group by
	子句对保留的行进行分组:
	· where 首先对 products 表中的行进行过滤 ,只保留 price 小于$15的行 。
	· group by 子句对保留的行根据product_type_id 列进行分组。
		select product_type_id , avg(price)
		from products
		where price < 15
		group by product_type_id ;
6)组合使用 group by 、where 和 having 子句:
	where 、 group by 和 having 可以在同一个查询中使用 。这样使用时,where 首先对返回的行进行过滤,然后group by
	子句对保留的行进行分组,最后having子句对行分组进行过滤。
	select product_type_id , avg(price)
	from products
	where product_id > 3
	group by product_type_id
	having avg(price) > 13 ;
		PRODUCT_TYPE_ID AVG(PRICE)
		--------------- ----------
							 13.49
					  2 26.2966667
					  4      13.99
					  3      13.24
	最后一个例子在上面这个离子的基础上加了一个 order by 子句,以便按照平均值对结果进行排序。
	select product_type_id , avg(price)
	from products
	where price < 15
	group by product_type_id 
	having avg(price) > 13
	order by avg(price) ;
	在上面的例子中,是否去掉 product_type_id 对最终得到的结果的影响不大
	select product_type_id , product_id , avg(price)
	from products
	where price < 15
	group by product_type_id 
	having avg(price) > 13
	order by avg(price) ;
	上面的例子中由于在“select product_type_id ,product_id , avg(price)”中使用了product_id这个,导致返回的
	结果集中不知道怎么处理返回的product_id,最终报错。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zd_bcrs/article/details/108589230

智能推荐

mnist torch加载fashion_简单的使用PyTorch和Fashion MNIST数据集进行深度学习图像分类...-程序员宅基地

概述本文的目的是为那些想要使用PyTorch和Fashion MNIST进行简单深度学习图像分类网络的人提供示例参考代码。在本文中,我们将演示深度学习图像分类网络的所有工作部分,包括加载数据,定义网络,优化GPU上的权重以及评估性能。整理Fashion MNIST数据集Fashion MNIST是一个包含70,000个灰度图像和10个类的数据集。1.检查GPU是否可用import torchpri..._kaggle加载fashionminist

多线程的关键字 特点_多线程中的关键字-程序员宅基地

1:volatile关键字 能保证可见性不能保证原子性线程更新过的数据先是放在缓存中 然后更新到主线程中 使用该关键字后会立即把更新后的值更新到主线程 然后删除掉缓存中的数据 但是当数据更新之前 可能多个线程取到同一个值 比方初始值是0,初始化2个线程,可能2个线程取到0这个数值加一,都是在0这个基础上进行的 .禁止指令重排序优化。有volatile修饰的变量,赋值后多执行了一个..._多线程中的关键字

微信公众平台开发教程Java版(一)环境准备篇-程序员宅基地

准备写系列博客,记录下我的微信公众平台学习记录,也为那些摸索中的开发者提供点参考。希望与大家共同进步。微信3.0的时候我开始做微信公众账号,那时候没时间研究开发,先用的是编辑者模式,后用开发者模式,托管于第三方。一直想自己写个服务端来实现个人定制化的需求。废话不多说,进入正题。想要开发微信公众平台需要一些环境一、申请微信公众账号

【css】linear-gradient的几种用法_linear-gradient用法-程序员宅基地

背景linear-gradient很多人用过,我发现这东西用起来变化还是挺多的。语法<side-or-corner>描述渐变线的起始点位置。它包含to和两个关键词:第一个指出水平位置left or right,第二个指出垂直位置top or bottom。关键词的先后顺序无影响,且都是可选的。to top, to bottom, to left 和 to right这些值..._linear-gradient用法

Android View绘制流程-程序员宅基地

前言    在学习安卓的时候免不了和布局文件打交道,一直都想弄清楚内部究竟是个什么原理,于是有了这篇文章。    这篇文章形成与多个大神的文章集和,算是帮大家简单过滤一下关键信息,相信看完后能够基本上了解绘制流程是个什么样子。(无安卓基础的话可能有点难懂hhh)View绘制流程    View 的绘制流程分为三步:在自定义View的时候一般需要重写父类的onMeasure()、onLayout()、onDraw()三个方法,来完成视图的展示过程。当然,这三个暴露给开发者重写的方法只不过是整个绘制流程_android view绘制流程

一、赛普拉斯EZ-USB FX3开发环境安装_ez-usb fx系列单片机 usb外围设备与应用-程序员宅基地

CYUSB3014 FX3 开发环境安装_ez-usb fx系列单片机 usb外围设备与应用

随便推点

文旅行业进化史:从原点认知文旅未来-程序员宅基地

在我国旅游市场发展迅猛的大背景下,不仅百强房企纷纷进驻文旅地产领域,其地域范围也在不断扩张。从海南、西南、长三角到环渤海、两广与闽东南,文旅地产作为以服务为核心的产业地产,正在逐渐受到大众的青睐,而未来的文旅地产也将开启房地产行业的下一个黄金十年。万达的偶然万达在文旅产业的成就曾经备受瞩目,王健林曾经说过:“要让万达电影、文旅、酒店成为全球品牌。”文旅全球品牌只有三家企业——迪士尼、环...

Java 程序设计基础(第四版)上_java程序设计第四版-程序员宅基地

第 1 章 Java语言概述Java语言有哪些特点? 答:简单易学、面向对象、平台无关性、可靠性、安全性、支持多线程、支持网络编程、编译与解释并存什么是Java的虚拟机? 答:任何一种可以运行Java字节码的软件均可看成是Java的虚拟机 什么是字节码?采用字节码的最大好处是什么? 答:字节码是Java虚拟机的指令组,和CPU上的微指令很相似 。字节码最大的好处是可跨平台运行什么_java程序设计第四版

【C++中的类型转换】C语言类型转换与C++类型转换对比,以及4种C++类型转换详解_错误(活动)e0171类型转换无效_Mindtechnist的博客-程序员宅基地

详细讲解C语言和C++中类型转换的区别和关系;通过程序详细分析了C++中4中类型转换的使用场景,使用方法,区别和联系。_错误(活动)e0171类型转换无效

安装Maven3时出现Exception in thread "main" java.lang.UnsupportedClassVersionError_"maven 3exception in thread \"main\" java.lang.uns-程序员宅基地

一、问题描述安装完maven-3.3.9,并配置好环境变量之后,在命令行输入mvn -v,出现Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0 at java.lang_"maven 3exception in thread \"main\" java.lang.unsupportedclassversionerror:"

AS3 Vector2D 详细类-程序员宅基地

package { /** * Vector2D * Purpose: Utility class to assist in Vector manipulation in a 2D environment * @author Shiu * @version 1.0 9 August 2011 * @version 2.0 22 August 2011 */ pub