1

数据处理_zhang_shiwei的技术博客_51CTO博客

 1 year ago
source link: https://blog.51cto.com/u_15641375/5814998
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1. 汇总数据函数

1.AVG() -- 求平均值我们可以求某个字段所有行的平均值,例如:

SELECT
AVG(prod_price)
FROM
products;

运行结果如下:

数据处理_sql

我们可以给平均值起一个名字,例如:

SELECT
AVG(prod_price) avg_price
FROM
products;

运行结果如下:

数据处理_数据_02

我们还可以对符合条件的行求平均值,例如:

SELECT
AVG(prod_price)
FROM
products
WHERE
vend_id = 'BRS01';

运行结果如下:

数据处理_sql_03

这里有两点要说明下:1.AVG() 会忽略列值为NULL的行。2.AVG()只能用来确定特定数值列的平均值。

2.COUNT() -- 计数我们使用COUNT()函数进行计数。COUNT() 函数有两种使用方式:(1). 使用 COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。(2). 使用 COUNT(column)对特定列中具有值的行进行计数,忽略 NULL 值。例如:

SELECT
COUNT(*)
FROM
customers;

运行结果如下:

数据处理_数据_04
SELECT
COUNT(cust_email)
FROM
customers;

运行结果如下:

数据处理_sql_05

如果指定列名,则 COUNT()函数会忽略指定列的值为 NULL 的行,但如果COUNT()函数中用的是星号(*),则不忽略。

3.MAX() -- 求最大值

SELECT
MAX(prod_price)
FROM
products;

运行结果如下:

数据处理_数据_06

4.MIN() -- 求最小值

SELECT
MIN(prod_price)
FROM
products;

运行结果如下:

数据处理_数据_07

MAX(),MIN()函数会忽略值为NULL的行。

5.SUM() -- 求和

# 所有订单的金额之和。
SELECT
SUM(quantity * item_price)
FROM
orderitems;

运行结果如下:

数据处理_最小值_08

汇总函数用来汇总数据,这些函数都很高效,一般比自己在程序中计算要快得多,所以能用汇总函数解决的我们就不要自己在程序中计算。

假设我们要求每个供应商的商品价格的平均值,如果一个供应商一个供应商的计算,显然过于麻烦。这时候我们可以使用GROUP BY子句。

SELECT
vend_id,
AVG(prod_price)
FROM
products
GROUP BY
vend_id;

运行结果如下:

数据处理_数据_09

在使用 GROUP BY 时,除计算语句外,SELECT 语句中的每一列都必须在 GROUP BY 子句中给出。GROUP BY 子句必须出现在 WHERE 子句之后,ORDER BY 子句之前。

像对行进行过滤一样,我们也可以对分组进行过滤。与过滤行不同的是,过滤分组不能使用 WHERE 子句,因为 WHERE 子句没有分组的概念,我们可以使用另外一个子句 HAVING。WHERE 用来过滤行,HAVING 用来过滤分组。WHERE 在数据分组前进行过滤,HAVING 在数据分组后进行过滤。例如:

# 每个供应商供应商品的平均价格。
SELECT
vend_id,
AVG(prod_price) AS avg_price
FROM
products
GROUP BY
vend_id;

运行结果如下:

数据处理_最小值_10

使用 having 进行过滤

# 使用 having 进行过滤
SELECT
vend_id,
AVG(prod_price) AS avg_price
FROM
products
GROUP BY
vend_id
HAVING
avg_price > 5;

运行结果如下:

数据处理_sql_11
# 每个供应商的商品数
SELECT
vend_id,
count(*)
FROM
products
GROUP BY
vend_id;

运行结果如下:

数据处理_数据_12

每个供应商商品价格的最大值

# 每个供应商商品价格的最大值
SELECT
vend_id,
MAX(prod_price)
FROM
products
GROUP BY
vend_id;

运行结果如下:

数据处理_数据_13

每个供应商商品价格的最小值

# 每个供应商商品价格的最小值
SELECT
vend_id,
MIN(prod_price)
FROM
products
GROUP BY
vend_id;

运行结果如下:

数据处理_sql_14

每个订单的金额

# 每个订单的金额
SELECT
order_num,
SUM(quantity * item_price)
FROM
orderitems
GROUP BY order_num;

运行结果如下:

数据处理_数据_15
#SQL 子句的顺序
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

下列哪一个函数可以求平均值?

数据处理_sql_16

A. COUNT()

B. MAX()

C. AVG()

D. SUM()


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK