首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SQL 中的聚集函数?

SQL 中的聚集函数?

作者头像
王小明_HIT
发布于 2020-07-07 18:21:22
发布于 2020-07-07 18:21:22
2K0
举报
文章被收录于专栏:程序员奇点程序员奇点

SQL 中的聚集函数?

SQL 函数包含了算术函数,字符串函数,日期函数,转换函数。还有一函数,叫做聚集函数。SQL 聚集函数是对一组数据进行汇总的函数,输入是一组数据的集合,输出是单个值。

有哪些聚集函数

SQL 中的聚集函数,有最大值,最小值,平均值。

image

Count 使用

例子:查询heros 中hp_max 大于6000 的英雄。

代码语言:javascript
复制
SELECT COUNT(*) FROM heros WHERE hp_max > 6000

运⾏结果为41。想要查询最⼤⽣命值⼤于6000,且有次要定位的英雄数量,需要使⽤COUNT函数。

代码语言:javascript
复制
SELECT COUNT(role_assist) FROM heros WHERE hp_max > 6000

运⾏结果是23。需要说明的是,COUNT(role_assist)会忽略值为NULL的数据⾏,⽽COUNT(*)只是统计数据⾏数,不管某个字段是否为NULL。

对数据行中不同的取值进行聚集,过滤掉重复,可以写成如下:

代码语言:javascript
复制
SELECT COUNT(DISTINCT hp_max) FROM heros

运⾏结果为61。

MAX 使用

使用 Max 求hp_max最大值。

代码语言:javascript
复制
SELECT MAX(hp_max) FROM heros WHERE role_main = '射⼿' or role_assist = '射⼿'

运⾏结果为6014。

COUNT,AVG、MAX、MIN和SUM函数使用

代码语言:javascript
复制
SELECT COUNT(*), AVG(hp_max), MAX(mp_max), MIN(attack_max), SUM(defense_max) FROM heros role_main = '射⼿' or role_assist = '射⼿'。

运行结果:

AVG 、MAX、 MIN 会自动忽略值为 NULL 的数据行。

AVG

有时候需要对 AVG 保留有效数字, 比如保存两位有效数字。

代码语言:javascript
复制
SELECT ROUND(AVG(DISTINCT hp_max), 2) FROM heros

运⾏结果为6653.84。

数据分组统计

数据分组,一般要使用 Group By 语句。

代码语言:javascript
复制
 SELECT COUNT(*), role_main FROM heros GROUP BY role_main

运行结果:

代码语言:javascript
复制
SELECT COUNT(*), role_assist FROM heros GROUP BY role_assist

image

如果还需要按照需要对分组进行排序,可以写成如下:

代码语言:javascript
复制
SELECT COUNT(*) as num, role_main, role_assist FROM heros GROUP BY role_main, role_assist ORDER BY num DESC

运行结果:

image

HAVING 与 WHERE 的区别是什么?

HAVING 和 WHERE 一样可以进行锅炉,只是 WHERE 作用于数据行, HAVING 作用于分组。

代码语言:javascript
复制
 SELECT COUNT(*) as num, role_main, role_assist FROM heros GROUP BY role_main, role_assist HAVING num > 5

运行结果:

总结

image

程序员开发者社区

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • SQL 中的聚集函数?
    • 有哪些聚集函数
      • Count 使用
      • MAX 使用
      • AVG
    • 数据分组统计
    • HAVING 与 WHERE 的区别是什么?
    • 总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档