MySQL查询和结果除以行数

时间:2015-06-05 17:00:03

标签: mysql sql linux syntax

我在MySQL中有以下数据,我希望求和(总数),然后除以行数。

示例:

我希望将AcctSessionTime列中的所有数字相加并将其除以项目数量,因此在我们的案例中6+4+3+31=44将它们除以4行数。

如何在单个查询中创建查询以完成所有操作?

mysql> select AcctStartTime,AcctStopTime,AcctSessionTime from radacct where UserName='spatel' AND SipResponseCode='200';
+---------------------+---------------------+-----------------+
| AcctStartTime       | AcctStopTime        | AcctSessionTime |
+---------------------+---------------------+-----------------+
| 2015-06-04 15:32:03 | 2015-06-04 15:32:09 |               6 |
| 2015-06-04 16:11:27 | 2015-06-04 16:11:31 |               4 |
| 2015-06-04 16:13:37 | 2015-06-04 16:13:40 |               3 |
| 2015-06-05 11:44:31 | 2015-06-05 11:45:02 |              31 |
+---------------------+---------------------+-----------------+
4 rows in set (0.00 sec)

注意:以上是我们拥有数千行实际数据的示例数据。

3 个答案:

答案 0 :(得分:3)

计算SUM(RowData) / #RowsRowData的平均值 - 本身已经支持AVG聚合函数:

select AVG(AcctSessionTime) 
from radacct 
where UserName='spatel' AND SipResponseCode='200';

如果需要,您还可以使用GROUP BY语句执行分组平均值

答案 1 :(得分:2)

mysql> select sum(AcctSessionTime) div count(AcctSessionTime) as result from radacct where UserName='spatel' AND SipResponseCode='200';

| result |
+--------+
|     11 |

你可以试试这个。

答案 2 :(得分:1)

你可以试试这个:

Select AVG(AcctSessionTime) from radacct where UserName='spatel' AND SipResponseCode='200';