SQL_STUDY:16. SQL 函数 与GROUP BY 和 HAVING 子句

摘要:

  1. SQL 函数
  2. GROUP BY
  3. HAVING 子句
  4. round() 返回指定小数位的值
  5. now() 返回现在时刻
  6. format() 函数用于对字段的显示进行格式化。

SQL 函数

SQL 拥有很多可用于计数和计算的内建函数。

函数的语法
内建 SQL 函数的语法是:

SELECT function() FROM

函数的类型

在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:

  • Aggregate 函数(合计函数)
  • Scalar 函数(计算函数)

合计函数(Aggregate functions)
Aggregate 函数的操作面向一系列的值,并返回一个单一的值。

注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!

MS Access 中的合计函数
在这里插入图片描述

在 SQL Server 中的合计函数
在这里插入图片描述

Scalar 函数
Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。

MS Access 中的 Scalar 函数

在这里插入图片描述


SQL GROUP BY 语句

合计函数 (比如 SUM) 常常需要添加 GROUP BY 语句。

GROUP BY 语句

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

SQL GROUP BY 语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name

SQL GROUP BY 实例

我们拥有下面这个 “Orders” 表:
在这里插入图片描述

现在,我们希望查找每个客户的总金额(总订单)。

我们想要使用 GROUP BY 语句对客户进行组合。

我们使用下列 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

结果集类似这样:
在这里插入图片描述

GROUP BY 一个以上的列

我们也可以对一个以上的列应用 GROUP BY 语句,就像这样:

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate

HAVING 子句
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

SQL HAVING 语法

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

SQL HAVING 实例

我们拥有下面这个 “Orders” 表:

现在,我们希望查找订单总金额少于 2000 的客户。

我们使用如下 SQL 语句:

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

结果集类似:
在这里插入图片描述

现在我们希望查找客户 “Bush” 或 “Adams” 拥有超过 1500 的订单总金额。

我们在 SQL 语句中增加了一个普通的 WHERE 子句:

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Bush' OR Customer='Adams'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

结果集:

在这里插入图片描述


SQL ROUND() 函数

ROUND() 函数

ROUND 函数用于把数值字段舍入为指定的小数位数。

SQL ROUND() 语法

SELECT ROUND(column_name,decimals) FROM table_name

在这里插入图片描述

SQL ROUND() 实例

我们拥有下面这个 “Products” 表:
在这里插入图片描述
现在,我们希望把名称和价格舍入为最接近的整数。

我们使用如下 SQL 语句:

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products

结果集类似这样:
在这里插入图片描述


NOW() 函数

NOW 函数返回当前的日期和时间。

提示:如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间。
SQL NOW() 语法

SELECT NOW() FROM table_name

SQL NOW() 实例
我们拥有下面这个 “Products” 表:

在这里插入图片描述
现在,我们希望显示当天的日期所对应的名称和价格。

我们使用如下 SQL 语句:

SELECT ProductName, UnitPrice, Now() as PerDate FROM Products

结果集类似这样:

在这里插入图片描述


SQL FORMAT() 函数

FORMAT() 函数

FORMAT 函数用于对字段的显示进行格式化。

SQL FORMAT() 语法

SELECT FORMAT(column_name,format) FROM table_name

在这里插入图片描述
SQL FORMAT() 实例
我们拥有下面这个 “Products” 表:
在这里插入图片描述

现在,我们希望显示每天日期所对应的名称和价格(日期的显示格式是 “YYYY-MM-DD”)。

我们使用如下 SQL 语句:

SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate
FROM Products

结果集类似这样:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值