Sql Server系列:聚合函数
1 SUM
SUM是一个求和函数,返回指定列值的总和。SUM 只能用于数字列。 其中忽略 Null 值。
语法
SUM ( [ ALL | DISTINCT ] expression )
OVER ( [ partition_by_clause ] order_by_clause )
示例
SELECT SUM([UnitsInStock]) FROM [dbo].[Product]
SELECT SUM(DISTINCT([UnitsInStock])) FROM [dbo].[Product]
SUM可以与GROUP BY一起使用,计算每个分组的总和。
SELECT [CategoryID],SUM([UnitsInStock])
FROM [dbo].[Product]
GROUP BY [CategoryID]
2 AVG
返回组中各值的平均值。 其中忽略 Null 值。
语法
AVG ( [ ALL | DISTINCT ] expression )
OVER ( [ partition_by_clause ] order_by_clause )
示例
SELECT AVG([UnitsInStock]) FROM [dbo].[Product]
SELECT [CategoryID],AVG([UnitsInStock])
FROM [dbo].[Product]
GROUP BY [CategoryID]
3 MAX
返回表达式中的最大值。
语法
MAX ( [ ALL | DISTINCT ] expression )
OVER ( [ partition_by_clause ] order_by_clause )
示例
SELECT MAX([UnitsInStock]) FROM [dbo].[Product]
SELECT [CategoryID],MAX([UnitsInStock])
FROM [dbo].[Product]
GROUP BY [CategoryID]
4 MIN
返回表达式中的最小值。
语法
MIN ( [ ALL | DISTINCT ] expression )
OVER ( [ partition_by_clause ] order_by_clause )
示例
SELECT MIN([UnitsInStock]) FROM [dbo].[Product]
SELECT [CategoryID],MIN([UnitsInStock])
FROM [dbo].[Product]
GROUP BY [CategoryID]
在查询语句中同时使用MIN、MAX函数
SELECT [CategoryID],MIN([UnitsInStock]), MAX([UnitsInStock])
FROM [dbo].[Product]
GROUP BY [CategoryID]
where条件过滤
SELECT [CategoryID],MIN([UnitsInStock]), MAX([UnitsInStock])
FROM [dbo].[Product]
WHERE [CategoryID] IN (1, 2, 3)
GROUP BY [CategoryID]
5 COUNT
返回组中的项数。 COUNT 与 COUNT_BIG 函数类似。 两个函数唯一的差别是它们的返回值。 COUNT 始终返回 int 数据类型值。 COUNT_BIG 始终返回 bigint 数据类型值。
语法
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
    OVER ( [ partition_by_clause ] order_by_clause )
示例
SELECT COUNT([UnitsInStock]) FROM [dbo].[Product]
SELECT [CategoryID],COUNT([UnitsInStock])
FROM [dbo].[Product]
GROUP BY [CategoryID]
COUNT(*)函数用于计算查询中返回的行数。
SELECT COUNT(*) FROM [dbo].[Product]
COUNT函数的其他计算形式,如COUNT(1)、COUNT([PrimaryKey])、COUNT([ColumnName]),COUNT()函数会忽略NULL的记录,在使用COUNT([ColumnName])计算行数时,字段ColumnName值为NULL的记录不会计算。
SELECT COUNT([ProductName]) FROM [dbo].[Product]
等价于:
SELECT COUNT([ProductName]) FROM [dbo].[Product]
WHERE [ProductName] IS NOT NULL
在COUNT()方法中使用DISTINCT
SELECT COUNT(DISTINCT [CategoryID]) FROM [dbo].[Product]
6 HAVING
HAVING子句仅用于带有GROUP BY子句的查询语句中,WHERE子句用于每一行(在变成一个组的某一部分之前),而HAVING子句用于分组的聚合值。
SELECT [CategoryID], COUNT(*) AS Products
FROM [dbo].[Product]
GROUP BY [CategoryID]
SELECT [CategoryID], COUNT(*) AS Products
FROM [dbo].[Product]
WHERE [Quantity] >= 10
GROUP BY [CategoryID]
SELECT [CategoryID], COUNT(*) AS Products
FROM [dbo].[Product]
WHERE [Quantity] >= 10
GROUP BY [CategoryID]
HAVING COUNT(*) > 1
Sql Server系列:聚合函数的更多相关文章
- SQL Server 自定义聚合函数
		说明:本文依据网络转载整理而成,因为时间关系,其中原理暂时并未深入研究,只是整理备份留个记录而已. 目标:在SQL Server中自定义聚合函数,在Group BY语句中 ,不是单纯的SUM和MAX等 ... 
- SQL server  数据库 ——聚合函数(一列 多行,值类型)
		聚合函数 5种函数: 1.max最大值 select max(price) from car where code='c024' 2.min最小值 select * from car wher ... 
- sql server中用聚合函数查询退休人的开销信息
		1创建表 create database Mathgouse MathgoCREATE TABLE A(ID INT PRIMARY KEY IDENTITY,--自增主键ID_CARD VARCHA ... 
- sql server中常用方法函数
		SQL SERVER常用函数 1.DATEADD在向指定日期加上一段时间的基础上,返回新的 datetime 值. (1)语法: DATEADD ( datepart , number, date ) ... 
- SQL Server 内置函数、临时对象、流程控制
		SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ... 
- SQL Server数据库PIVOT函数的使用详解(一)
		http://database.51cto.com/art/201108/285250.htm SQL Server数据库中,PIVOT在帮助中这样描述滴:可以使用 PIVOT 和UNPIVOT 关系 ... 
- 10、SQL Server 内置函数、临时对象、流程控制
		SQL Server 内置函数 日期时间函数 --返回当前系统日期时间 select getdate() as [datetime],sysdatetime() as [datetime2] getd ... 
- SQL Server 系列文章快速导航(SWF版)
		一.前言 在博客园写博客不自不觉已经有5个年头了,一开始只是为了记录工作中遇到的问题和解决办法,后来写的文章不自不觉的侧重在SQL Server方面的技术文章,在2014年1月终于鼓起勇气申请了微软S ... 
- SQL Server:字符串函数
		以下所有例子均Studnet表为例: 1. len():计算字符串长度 len()用来计算字符串的长度,每个中文汉字或英文字母都为一个长度 select sname, len(sname) from ... 
- SQL Server 分隔字符串函数实现
		在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录,而往往人员和人员爱好在界面展示层要一并提交 ... 
随机推荐
- React,React Native中的es5和es6写法对照
			es6用在React中的写法总结: 在es6还没有完全支持到浏览器的阶段里,已经有很多技术人员开始用es6的写法来超前编程了,因为有转义es6语法的工具帮助下,大家才可大量使用.解析看看es6写法用在 ... 
- 双向链表、双向循环链表的JS实现
			关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法: 单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ... 
- 网络流dinic实现总结
			太羞耻了,搞了半天居然没发现自己写的不是dinic,直到被一道时限紧的题目卡掉才发现 int dfs(int now,int flow,int sum) { if(now==n) return flo ... 
- Windows中断那些事儿
			搞内核研究的经常对中断这个概念肯定不陌生,经常我们会接触很多与中断相关的术语,按照软件和硬件进行分类: 硬件CPU相关: IRQ.IDT.cli&sti 软件操作系统相关: APC.DPC.I ... 
- ssh简化后之事务管理
			为了能让大家更好的了解,所以今天跟大家分享整个项目.ps:ssh环境的搭建我就不一一讲解了,请大家参考 http://www.cnblogs.com/zczc1996/p/5842367.html. ... 
- springmvc2 一个控制器写多个方法(非注解方式)
			出处:http://blog.csdn.net/xuewenke/article/details/23895999 springmvc2 一个控制器写多个方法(非注解方式) 分类: spring 20 ... 
- (转)对博士学位说永别 by 王珢
			对博士学位说永别 by 王垠 经过深思熟虑之后,我决定再次“抛弃”我的博士学位.这是我第三次决定离开博士学位,也应该是最后一次了.这应该不是什么惊人的消息,因为我虽然读博士10年了,可是我的目标从来就 ... 
- FreeMarker中文API手册(完整)
			FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用 ... 
- 一些值得练习的github项目
			简单粗暴,一晚上用 node.Vue 写个联机五子棋 https://github.com/ccforward/cc/issues/51 Vue2.0实现简易豆瓣电影webApp https://gi ... 
- Java读写文件的几种方法
			import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java ... 
