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中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录,而往往人员和人员爱好在界面展示层要一并提交 ...
随机推荐
- Codeforces Round #345 (Div. 1) A. Watchmen
A. Watchmen time limit per test 3 seconds memory limit per test 256 megabytes input standard input o ...
- cocoapods安装及使用
最近新换了电脑,重新安装cocoapods遇到了很多问题,在这里把问题还有解决方案记录一下 一.安装Cocoapods 在安装CocoaPods之前,首先要在本地安装好Ruby环境,一般Mac下都自带 ...
- Linux Shell 截取字符串
Linux Shell 截取字符串 shell中截取字符串的方法很多 ${var#*/} ${var##*/} ${var%/*} ${var%%/*} ${var:start:len} ${var: ...
- ActionMapping
在Struts中,ActionServlet只是任务的分派者,它依请求分配任务给其它的对象来执行,而分配的依据是请求的URI以及struts-config.xml的<action-mapping ...
- 对象的this引用
Java中的this关键字总是指向调用该方法的对象.根据this出现位置的不同,this作为对象的默认引用有两个功能: 1.构造器中引用该构造器正在初始化的对象. 2.在方法中引用调用该方法的对象. ...
- Java中堆内存和栈内存详解
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...
- 华为oj 购物单
这两天断断续续敲完这个(放假的时候比较懒),一次成功有点小激动(●'◡'●) 不过貌似从第一次打开开始计时..... 这道题目很像01背包,我将附件与它们的主件绑定(就是link起来)然后套用动态规 ...
- 一篇关于匿名函数(function(){})()不错的文章
代码如下: (function(){ //这里忽略jQuery所有实现 })(); (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他 ...
- 学习笔记:Hashtable和HashMap
学了这么些天的基础知识发现自己还是个门外汗,难怪自己一直混的不怎么样.但这样的恶补不知道有没有用,是不是过段时间这些知识又忘了呢?这些知识平时的工作好像都是随拿随用的,也并不是平时一点没有关注过这些基 ...
- 培训SQLServer 嵌套事务PPT分享
培训SQLServer 嵌套事务PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E5%B5%8C%E5%A5%97%E4%BA%8 ...