MYSQL之AVG的使用

本文介绍了一种SQL技巧,通过使用子查询和联接操作,实现将相同金额(amount)的所有行号(rownum)值相加后进行均分的方法。此方法解决了简单使用AVG函数无法达到的数据处理需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:把amount中值相等的rownum值相加然后均分
1、TEST表中数据如下: 
SELECT rownum , amount , sid FROM `test`
图片
2、目标如下:
图片 
我们要得到rownums数据

3、如果我们只是简单的用AVG来分组
SELECT AVG(rownum) AS rownums , COUNT(1) AS number FROM `test` GROUP BY amount 
效果如下:
图片 
 
达不到我们的目的【明显少了数据行】

修改我们的SQL:
SELECT us.rownum,us.amount,uu.rownums FROM test AS us LEFT JOIN 
(SELECT AVG(rownum) AS rownums,amount FROM `test` GROUP BY amount) AS uu ON us.amount =uu.amount  

PS: LEAST
(x,y,...)    
返回最小值(如果返回值被用在整数(实数或大小敏感字串)上下文或所有参数都是整数(实数或大小敏感字串)则他们作为整数(实数或大小敏感字串)比较,否则按忽略大小写的字符串被比较)  
### 如何在 MySQL使用 `AVG` 函数 #### 语法结构 为了计算列中的平均值,在 SQL 查询中可以采用如下语法: ```sql SELECT AVG(column_name) FROM table_name; ``` 这里,`column_name` 是要计算其平均值的字段名称,而 `table_name` 则是要查询的数据表名[^1]。 #### 使用实例 假设有一个名为 `orders` 的数据表,其中包含订单详情。如果想要找出所有订单金额 (`amount`) 的平均值,则可执行以下命令: ```sql SELECT AVG(amount) AS average_order_amount FROM orders; ``` 这条语句会返回一个单独的结果行,显示作为 `average_order_amount` 列标签下的数值——即所有订单金额的算术均值[^3]。 当涉及到更复杂的情况时,比如按特定条件筛选记录后再求平均数,可以在同一个查询里加入 `WHERE` 子句来实现这一目的。例如,仅考虑那些来自某个国家客户的订单金额平均值: ```sql SELECT AVG(amount) AS country_average_order_amount FROM orders WHERE customer_country = '指定国家'; ``` 这将只针对满足 `customer_country='指定国家'` 这一条件的订单进行平均值运算[^2]。 对于分组统计的需求,还可以配合 `GROUP BY` 来获得不同类别下各自独立的平均值。如按照产品种类(`product_type`)分别得出各类产品的销售价格(`price`)平均值: ```sql SELECT product_type, AVG(price) as type_avg_price FROM sales GROUP BY product_type; ``` 上述例子展示了如何通过组合不同的 SQL 特性灵活运用 `AVG()` 函数完成多样化的数据分析任务[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值