博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql Server系列:聚合函数
阅读量:5782 次
发布时间:2019-06-18

本文共 2580 字,大约阅读时间需要 8 分钟。

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 ProductsFROM [dbo].[Product]GROUP BY [CategoryID]
SELECT [CategoryID], COUNT(*) AS ProductsFROM [dbo].[Product]WHERE [Quantity] >= 10GROUP BY [CategoryID]
SELECT [CategoryID], COUNT(*) AS ProductsFROM [dbo].[Product]WHERE [Quantity] >= 10GROUP BY [CategoryID]HAVING COUNT(*) > 1

转载地址:http://ficyx.baihongyu.com/

你可能感兴趣的文章
为Angular 4开发的UI组件库:FreeNG
查看>>
深入学习Vue SSR服务端渲染 用Nuxt.js打造CNode社区
查看>>
这是我见过最牛X的Java架构进阶学习路线图,没有之一!
查看>>
JavaScript中的Date,RegExp,Function对象
查看>>
中文文本相似度的研究有什么用
查看>>
【工具分享】idomain一个命令行域名查询工具
查看>>
老司机教你如何优雅地完成一个小项目测试
查看>>
sqoop提供数据库密码的4种方式
查看>>
web缓存机制
查看>>
浏览器里的黑天鹅:不可预知的前端变革点
查看>>
Java后端技术概览
查看>>
Swift -Inheritance
查看>>
通过 Laradock 学 Docker —— 配置篇
查看>>
机器学习第一周笔记
查看>>
Go语言字符串高效拼接(一)
查看>>
Android 弧形ViewPager 和弧形HeaderView(升级版)
查看>>
webpack多页面入口生产项目开发配置
查看>>
Zsh 开发指南(第十篇 文件查找和批量处理)
查看>>
妥妥的去面试之Android基础(二)
查看>>
iOS 自定义转场动画
查看>>