千家信息网

Mariadb聚合函数及分组查询怎么使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"Mariadb聚合函数及分组查询怎么使用",在日常操作中,相信很多人在Mariadb聚合函数及分组查询怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2026年11月01日Mariadb聚合函数及分组查询怎么使用

这篇文章主要介绍"Mariadb聚合函数及分组查询怎么使用",在日常操作中,相信很多人在Mariadb聚合函数及分组查询怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Mariadb聚合函数及分组查询怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

MariaDB Server 是最流行的开源关系型数据库之一。它由 MySQL 的原始开发者制作,并保证保持开源。它是大多数云产品的一部分,也是大多数Linux发行版的默认配置。MariaDB 被设计为 MySQL 的直接替代产品,具有更多功能,新的存储引擎,更少的错误和更好的性能。

聚合函数

当我们需要汇总表中的数据而不是使用表中某一行数据时,可以使用Mysql为我们提供的聚合函数,在Mysql中,常用的聚合函数有以下五个:

  1. AVG:取平均值
  2. COUNT:取统计值
  3. MAX:取最大值
  4. MIN:取最小值
  5. SUM:取和值

1.获得表中人口的总和

MariaDB [world]> SELECT SUM(Population) FROM city;+-----------------+| SUM(Population) |+-----------------+|      1429559884 |+-----------------+1 row in set (0.01 sec)

2.获得数据表中中国的总人口

MariaDB [world]> SELECT SUM(Population) FROM city WHERE CountryCOde='CHN';+-----------------+| SUM(Population) |+-----------------+|       175953614 |+-----------------+1 row in set (0.00 sec)

3.查询中国有多少个城市

MariaDB [world]> SELECT COUNT(ID) FROM city WHERE CountryCode =  'CHN';+-----------+| COUNT(id) |+-----------+|       363 |+-----------+1 row in set (0.00 sec)

关于COUNT,如果要统计有该表有多少行,千万别用*作为参数,因为~影响性能,选某一列就好了。

4.查询中国人口最少的城市的人口是多少

MariaDB [world]> SELECT MIN(Population) FROM city WHERE CountryCode = 'CHN';+-----------------+| MIN(Population) |+-----------------+|           89288 |+-----------------+1 row in set (0.00 sec)

5.查询中国人口最多的城市的人口

MariaDB [world]> SELECT MAX(Population) FROM city WHERE CountryCode = 'CHN';+-----------------+| MAX(Population) |+-----------------+|         9696300 |+-----------------+1 row in set (0.00 sec)

6.查询河南各城市的平均人口

MariaDB [world]> SELECT AVG(Population) FROM city WHERE District ='Henan';+-----------------+| AVG(Population) |+-----------------+|     383278.3333 |+-----------------+1 row in set (0.00 sec)

所以,我们看到,聚合函数通常用于数值上的计算。

分组查询

以上,我们使用聚合函数时,是对所有SELECT的数据进行分组操作,假如我们想要查询所有国家的城市数,不得不多次使用WHERE对CountryCode进行筛选。

MariaDB [world]> SELECT DISTINCT CountryCode FROM city;+-------------+| CountryCode |+-------------+| ABW         || AFG         |...............| ZWE         |+-------------+232 rows in set (0.00 sec)

我们看到,在我们的数据表中,有232个国家,那么?是不是需要我们对这232个不同国家都使用一次COUNT(ID)才能统计每个国家的城市数量呢?其实不然。

我们可以使用分组查询GROUP BY,什么叫分组呢? 分组查询就是使用指定的一列或多列,对数据进行逻辑分组(当分组依据相同时被划分为一组),假设有如下数据:

MariaDB [world]> SELECT * FROM city LIMIT 5;+----+----------------+-------------+---------------+------------+| ID | Name           | CountryCode | District      | Population |+----+----------------+-------------+---------------+------------+|  1 | Kabul          | AFG         | Kabol         |    1780000 ||  2 | Qandahar       | AFG         | Qandahar      |     237500 ||  3 | Herat          | AFG         | Herat         |     186800 ||  4 | Mazar-e-Sharif | AFG         | Balkh         |     127800 ||  5 | Amsterdam      | NLD         | Noord-Holland |     731200 |+----+----------------+-------------+---------------+------------+5 rows in set (0.00 sec)

我们使用GROUP BY CountryCode就是指定CountryCode作为分组依据,所以1,2,3,4行他们被分为同一组,而5在另一个组。

  1. 通常分组是配合聚合函数来使用的,聚合函数对每个单独的逻辑分组进行汇总计算。
  2. GROUP BY子句中列出的每一列都必须是检索列或有效的表达式(但不能是聚合函数),如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式,且不能使用别名。
  3. 除聚合函数外,SELECT语句中的每一列都必须在GROUP BY子句中给出。
  4. 如果分组中包含具有NULL值的行,则NULL将作为一个分组返回。
  5. GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。

1.查询各个国家的城市数量

MariaDB [world]> SELECT CountryCode,COUNT(ID) FROM city GROUP BY CountryCode;+-------------+-----------+| CountryCode | COUNT(ID) |+-------------+-----------+| ABW         |         1 || AFG         |         4 |...........................| ZMB         |         7 || ZWE         |         6 |+-------------+-----------+232 rows in set (0.00 sec)

当SELECT语句中使用WHERE子句时,WHERE子句总在分组前进行过滤。

2.查询各个国家人口大于1000000的城市数量

MariaDB [world]> SELECT CountryCode,COUNT(ID) FROM city WHERE Population >= 1000000 GROUPP BY CountryCode;+-------------+-----------+| CountryCode | COUNT(ID) |+-------------+-----------+| AFG         |         1 || AGO         |         1 || ARG         |         3 || ARM         |         1 || AUS         |         4 |...........................| YUG         |         1 || ZAF         |         1 || ZMB         |         1 || ZWE         |         1 |+-------------+-----------+77 rows in set (0.01 sec)

所以在分组中未出现的国家,没有1000000人口的城市。

3.查询总人口大于1000000的国家有哪些

HAVING子句用于过滤分组后所得到汇总值的数据,而HAVING支持的操作和WHERE子句是相同的。

例如:

MariaDB [world]> SELECT CountryCode,SUM(Population) AS Total_Population FROM city GROUP BY CountryCode HAVING Total_Population > 1000000;+-------------+------------------+| CountryCode | Total_Population |+-------------+------------------+| AFG         |          2332100 || AGO         |          2561600 || ARE         |          1728336 |..................................| ZAF         |         15196370 || ZMB         |          2473500 || ZWE         |          2730420 |+-------------+------------------+108 rows in set (0.00 sec)

到此,关于"Mariadb聚合函数及分组查询怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

分组 查询 函数 子句 城市 数据 人口 国家 中国 学习 相同 数量 更多 表达式 统计 产品 就是 性能 总人口 数据表 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 互联网科技产业 互联网科技公司的优势 互联网金融公司科技 广州善班互联网科技 一五八零互联网科技 居家互联网科技有限公司 海南购全球互联网科技 山东吉时兔互联网科技有限公司 安控科技rtu产品工业互联网 科技与互联网的利与弊 湖南一路畅行互联网科技 广州市恰铎互联网科技有限公司 互联网保险科技创业 用友工业互联网科技发展 长沙互联网科技 云南省自由互联网科技有限公司 21世纪互联网科技成就 九思连强互联网电子科技有限公司 广东鹅鹅鹅互联网科技有限公司 互联网科技社 鑫亿盛互联网科技 互联网科技小额贷款 互联网科技中介 央行互联网金融科技公司 智腾互联网科技有限公司 从那以后互联网科技有限公司 广州燕处互联网科技有限公司 互联网科技大佬云集 宁波允成互联网科技有限公司
0