合肥网站设计制作,网页seo搜索引擎优化,外贸网站定制公司哪家好,手机网络不好怎么回事但信号是满的在数据库操作中#xff0c;聚合查询是非常重要的一部分。通过聚合查询#xff0c;我们可以对数据进行汇总、统计和分析。MySQL提供了丰富的聚合函数来满足不同的需求。本文将详细介绍MySQL中常见的40个聚合函数及其使用场景#xff0c;并通过8个的案例展示它们的用法。
一、…在数据库操作中聚合查询是非常重要的一部分。通过聚合查询我们可以对数据进行汇总、统计和分析。MySQL提供了丰富的聚合函数来满足不同的需求。本文将详细介绍MySQL中常见的40个聚合函数及其使用场景并通过8个的案例展示它们的用法。
一、聚合函数的概念
聚合函数是对一组值执行计算并返回单个值的函数。它们通常用于SELECT语句中与GROUP BY子句一起使用以便对数据进行分组和汇总。
二、常见的40个聚合函数
以下是MySQL中常见的40个聚合函数及其使用场景
聚合函数描述使用场景COUNT()返回行数统计记录数SUM()返回数值列的总和计算总和AVG()返回数值列的平均值计算平均值MIN()返回列中的最小值查找最小值MAX()返回列中的最大值查找最大值GROUP_CONCAT()返回一组值的连接字符串将多行数据合并为一个字符串STD()返回数值列的标准差计算标准差VARIANCE()返回数值列的方差计算方差BIT_AND()返回按位与运算的结果按位与运算BIT_OR()返回按位或运算的结果按位或运算BIT_XOR()返回按位异或运算的结果按位异或运算JSON_ARRAYAGG()返回JSON数组将多行数据合并为JSON数组JSON_OBJECTAGG()返回JSON对象将多行数据合并为JSON对象VAR_POP()返回总体方差计算总体方差VAR_SAMP()返回样本方差计算样本方差STDDEV_POP()返回总体标准差计算总体标准差STDDEV_SAMP()返回样本标准差计算样本标准差COVAR_POP()返回总体协方差计算总体协方差COVAR_SAMP()返回样本协方差计算样本协方差CORR()返回相关系数计算相关系数MEDIAN()返回中位数计算中位数PERCENTILE_CONT()返回连续百分位数计算连续百分位数PERCENTILE_DISC()返回离散百分位数计算离散百分位数RANK()返回行的排名计算行的排名DENSE_RANK()返回行的密集排名计算行的密集排名ROW_NUMBER()返回行的序号计算行的序号NTILE()返回行的分桶号计算行的分桶号FIRST_VALUE()返回窗口中的第一个值获取窗口中的第一个值LAST_VALUE()返回窗口中的最后一个值获取窗口中的最后一个值LAG()返回前一行中的值获取前一行中的值LEAD()返回后一行中的值获取后一行中的值CUME_DIST()返回累积分布计算累积分布PERCENT_RANK()返回百分比排名计算百分比排名NTH_VALUE()返回窗口中的第N个值获取窗口中的第N个值JSON_EXTRACT()返回JSON文档中的值提取JSON文档中的值JSON_UNQUOTE()返回JSON文档中的未引用值提取JSON文档中的未引用值JSON_CONTAINS()返回JSON文档是否包含指定值检查JSON文档是否包含指定值JSON_CONTAINS_PATH()返回JSON文档是否包含指定路径检查JSON文档是否包含指定路径JSON_KEYS()返回JSON文档中的键提取JSON文档中的键JSON_LENGTH()返回JSON文档的长度计算JSON文档的长度
三、聚合查询的案例
1. 创建示例表
首先我们创建一个示例表sales用于演示各种聚合查询。
CREATE TABLE sales (id INT AUTO_INCREMENT PRIMARY KEY,product_name VARCHAR(50),quantity INT,price DECIMAL(10, 2),sale_date DATE
);INSERT INTO sales (product_name, quantity, price, sale_date) VALUES
(Apple, 10, 1.50, 2023-01-01),
(Banana, 20, 0.50, 2023-01-01),
(Apple, 15, 1.50, 2023-01-02),
(Banana, 25, 0.50, 2023-01-02),
(Orange, 30, 0.75, 2023-01-03),
(Orange, 35, 0.75, 2023-01-04);2. 使用COUNT()统计记录数
-- 统计总记录数
SELECT COUNT(*) AS total_records FROM sales;-- 统计不同产品的记录数
SELECT product_name, COUNT(*) AS product_count
FROM sales
GROUP BY product_name;输出结果:
---------------
| total_records |
---------------
| 6 |
--------------------------------------------
| product_name | product_count |
-----------------------------
| Apple | 2 |
| Banana | 2 |
| Orange | 2 |
-----------------------------3. 使用SUM()计算总和
-- 计算所有产品的总销售额
SELECT SUM(quantity * price) AS total_sales FROM sales;-- 计算每个产品的总销售额
SELECT product_name, SUM(quantity * price) AS total_sales
FROM sales
GROUP BY product_name;输出结果:
-------------
| total_sales |
-------------
| 83.75 |
----------------------------------------
| product_name | total_sales |
---------------------------
| Apple | 37.50 |
| Banana | 22.50 |
| Orange | 48.75 |
---------------------------4. 使用AVG()计算平均值
-- 计算所有产品的平均销售额
SELECT AVG(quantity * price) AS average_sales FROM sales;-- 计算每个产品的平均销售额
SELECT product_name, AVG(quantity * price) AS average_sales
FROM sales
GROUP BY product_name;输出结果:
---------------
| average_sales |
---------------
| 13.958333 |
--------------------------------------------
| product_name | average_sales |
-----------------------------
| Apple | 18.750 |
| Banana | 11.250 |
| Orange | 24.375 |
-----------------------------5. 使用MIN()和MAX()查找最小值和最大值
-- 查找所有产品的最小和最大销售额
SELECT MIN(quantity * price) AS min_sales, MAX(quantity * price) AS max_sales
FROM sales;-- 查找每个产品的最小和最大销售额
SELECT product_name, MIN(quantity * price) AS min_sales, MAX(quantity * price) AS max_sales
FROM sales
GROUP BY product_name;输出结果:
----------------------
| min_sales | max_sales |
----------------------
| 10.00 | 26.25 |
----------------------------------------------------------
| product_name | min_sales | max_sales |
------------------------------------
| Apple | 15.00 | 22.50 |
| Banana | 10.00 | 12.50 |
| Orange | 22.50 | 26.25 |
------------------------------------6. 使用GROUP_CONCAT()合并字符串
-- 合并所有产品的名称
SELECT GROUP_CONCAT(product_name) AS all_products FROM sales;-- 合并每个销售日期的产品名称
SELECT sale_date, GROUP_CONCAT(product_name) AS products_sold
FROM sales
GROUP BY sale_date;输出结果:
---------------------------
| all_products |
---------------------------
| Apple,Banana,Apple,Banana,Orange,Orange |
------------------------------------------------------------
| sale_date | products_sold |
---------------------------------
| 2023-01-01 | Apple,Banana |
| 2023-01-02 | Apple,Banana |
| 2023-01-03 | Orange |
| 2023-01-04 | Orange |
---------------------------------7. 使用STD()和VARIANCE()计算标准差和方差
-- 计算所有销售额的标准差和方差
SELECT STD(quantity * price) AS std_sales, VARIANCE(quantity * price) AS variance_sales
FROM sales;-- 计算每个产品销售额的标准差和方差
SELECT product_name, STD(quantity * price) AS std_sales, VARIANCE(quantity * price) AS variance_sales
FROM sales
GROUP BY product_name;输出结果:
----------------------------
| std_sales | variance_sales |
----------------------------
| 6.614378 | 43.750000 |
----------------------------------------------------------------------
| product_name | std_sales | variance_sales |
------------------------------------------
| Apple | 3.750000 | 14.062500 |
| Banana | 1.250000 | 1.562500 |
| Orange | 1.875000 | 3.515625 |
------------------------------------------8. 使用BIT_AND()、BIT_OR()和BIT_XOR()进行位运算
-- 计算quantity列的按位与、按位或和按位异或
SELECT BIT_AND(quantity) AS bit_and, BIT_OR(quantity) AS bit_or, BIT_XOR(quantity) AS bit_xor
FROM sales;输出结果:
--------------------------
| bit_and | bit_or | bit_xor |
--------------------------
| 0 | 35 | 15 |
--------------------------四、总结
通过本文的介绍和案例我们详细了解了MySQL中常见的聚合函数及其使用场景。这些聚合函数在数据分析和统计中非常有用能够帮助我们快速获取数据的汇总信息。掌握这些聚合查询的技巧将使你在数据库操作中更加得心应手。