聚合函数
通过前面的学习可知,在对数据进行分组统计时,经常需要结合 MySQL 提供的聚合函数才能够统计出具有价值的数据。
例如,获取每种商品分类下的商品数量、最高价格的商品、最低价格的商品等。
为此,MySQL 中的聚合函数就可在查询数据时提供一些特殊的功能。
COUNT()、SUM()、AVG()、MAX()、MIN()和 GROUP_CONCAT()函数中可以在参数前添加 DISTINCT,表示对不重复的记录进行相关操作。
COUNT()的参数设置为“*”时,表示统计符合条件的所有记录(包含 NULL)。
单独使用聚合函数统计数据
mysql> SELECT MAX(price), MIN(price) FROM sh_goods;
+------------+------------+
| MIN(price) | MAX(price) |
+------------+------------+
| 5999.00 | 0.50 |
+------------+------------+
1 row in set (0.00 sec)
聚合函数与分组结合使用统计数据
mysql> SELECT category_id, MAX(price), MIN(price)
-> FROM sh_goods GROUP BY category_id HAVING COUNT(*) > 2;
+-------------+------------+------------+
| category_id | MAX(price) | MIN(price) |
+-------------+------------+------------+
| 3 | 15.00 | 0.50 |
+-------------+------------+------------+
1 row in set (0.00 sec)
MySQL5.7.22 中新增函数 JSON_ARRAYAGG()和 JSON_OBJECTAGG()
mysql> SELECT category_id, JSON_ARRAYAGG(id), JSON_OBJECTAGG(id, name)
-> FROM sh_goods GROUP BY category_id;
+-------------+-------------------+-------------------------------------------+
| category_id | JSON_ARRAYAGG(id) | JSON_OBJECTAGG(id, name) |
+-------------+-------------------+-------------------------------------------+
| 3 | [1, 2, 3] | |
| 6 | [5] | |
| 8 | [6] | |
| 9 | [7] | |
| 10 | [8] | |
| 12 | [4] | |
| 15 | [9] | |
| 16 | [10] | |
+-------------+-------------------+-------------------------------------------+
8 rows in set (0.00 sec)
算术运算符适用于数值类型的数据,通常应用在 SELECT 查询结果的字段中使用,在 WHERE 条件表达式中应用较少。
版权声明: 本文为 InfoQ 作者【在即】的原创文章。
原文链接:【http://xie.infoq.cn/article/ab6d1bce7ce0db1769fb2badc】。文章转载请联系作者。
评论