mysql汇总数据,汇总数据

-- 聚集函数(方便分析和报表生成,其实也就是进行简单的统计学的处理,不需要返回原表来浪费时间)

/*

比如:

1.确定表中某些行数(或者满足某个条件或包含某个特定值的行数)

2.获得表中某些行的和

3.找出表列(或所有行或某些特定的行)的最大值、最小值、平均值

(在各种主要sql实现中得到了相当一致的支持)

特点:对某些行运行的函数,计算并返回一个值

sql聚集函数:

avg() 返回某列的平均值

count() 返回某列的行数

max() 返回某列的最大值

min() 返回某列的最小值

sum() 返回某列值之和

*/

-- avg()函数

/* 计算平均值,可以返回所有列的平均值,也可以返回特定列或行的平均值*/

select avg(prod_price) as avg_price

from products;

48e4b10f802444ec3e4748918f607d41.png

#返回products表中所有产品的平均价格

#返回特定供应商所提供产品的平均价格

select avg(prod_price) as avg_price

from products

where vend_id = 'dll01';

6b9258e6b7944367fe1584720585ecd1.png

#avg()只能用于单个列,列名是函数的参数,对于多个列则要用多个avg()

#avg()函数忽略列值为null的行

-- count()函数

/*count()确定表中行的数目或符合特定条件的行的数目

有两种使用方式:

1.使用count(*)对表中行的数目进行计数,不管表列中包含的是空值(null)还是非空值

2.count(column)对特定列中具有的值的行进行计数,忽略null值*/

select count(*) as num_cust

from customers;#返回customers表中顾客的总数

33275fbba9391fb9b4e510f352a41d30.png

-- 只对具有电子邮件地址的客户计数

select count(cust_email) as num_cust

from customers;

17dec1290e6b753e5c55326c0aed15c5.png

# 注意count()指定列名,则忽略为空的行,使用星号*,则不忽略。

-- max()返回指定列中的最大值(要求指定列名)

select max(prod_price) as max_price

from products;

2875f30e95469a315987e80acd564e84.png

/* max()一般用来找出最大的数值或日期值,但是也可以用来返回任意列中的最大值,在文本列中返回该列排序后的最后一行

max()函数忽略列值为null的行*/

-- min()函数(返回指定列的最小值)(要求指定列)

select min(prod_price) as min_price

from products;

be826fcaaec273a7a5ef4c4e8e5ddd35.png

/* min()一般用来找出最小的数值或日期值,但是也可以用来返回任意列中的最小值,在文本列中返回该列排序后的最前面的行

min()函数忽略列值为null的行*/

-- sum()函数 (用来返回指定列值的和)

select sum(quantity) as items_ordered

from orderitems

where order_num = 20005;

0bde88f316f86696649cee336e28cb7f.png

-- sum()也可以用来合计计算值,得到总的订单金额

select sum(item_price*quantity) as total_price

from orderitems

where order_num = 20005;

806843d45f250a55a8afa8bdc5bdd80c.png

#sum()函数忽略列值为null的行

-- 聚集不同值

/* avg() count() max() min() sum()都可以如下使用

1.对所有行执行计算(默认all参数)

2.只包含不同的值,指定distinct参数,去重 */

select avg(distinct prod_price) as avg_price

from products

where vend_id = 'dll01';

9d4cda0edec823806d7998e7f17727cc.png

/* 再次强调distinct后面必须使用列名,不能用于count(*)

distinct用于min()和max()没有意义 */

-- 组合聚集函数

#select语句可根据需要包含多个聚集函数

select count(*) as num_items,

min(prod_price) as price_min,

max(prod_price) as price_max,

avg(prod_price) as price_avg

from products;

06e9ff2e15dd607d835e573ae90e0956.png

#取别名时不要使用表中实际的列名,可能会产生模糊的错误信息

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值