MySQL查询和结果除以行数(平均值)

MySQL查询和结果除以行数(平均值),mysql,sql,linux,syntax,Mysql,Sql,Linux,Syntax,我在MySQL中有以下数据,我想求和总数,然后除以行的数字 例如: 我想对AcctSessionTime列中的所有数字求和,并将其除以项目数,因此在我们的例子中,6+4+3+31=44将它们除以4行数 如何在单个查询中手工完成所有查询 mysql> select AcctStartTime,AcctStopTime,AcctSessionTime from radacct where UserName='spatel' AND SipResponseCode

我在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)
注:以上是示例数据,我们有数千行的实际数据。

计算SUMRowData/行是RowData的平均值-这已经作为AVG聚合函数在本机得到支持:

select AVG(AcctSessionTime) 
from radacct 
where UserName='spatel' AND SipResponseCode='200';
您还可以使用GROUP BY语句进行分组平均,如果需要,您可以尝试以下方法:

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

你可以试试这个。

哇!!!那真是超级容易!!!是时候学习SQL了。但你们是如此的乐于助人,所以从来没有尝试过打开书:嗯,有了4.5k的代表,你们已经知道当你们在陷入困境之前展示你们的尝试时,你们是多么的感激它。我从Linux操作系统中获得了所有的代表,很少使用SQL,有时只是在这里点击并得到答案,所以永远不用费心学习!!。。当我读到我开始分组的问题时,这就是我头脑中的经验,我将列和除以计数等向上投票,因为我知道我需要更仔细地阅读文档,它可以使生活更轻松。。。GLG当你必须为eg做除法运算时,你的例子是有效的,而且非常好,否则通常的平均值就可以了。可以使用“/”运算符而不是DIV,因为DIV会截断。此外,一轮也不错,可能需要一个NULLIF来防止被零除。因此,查询将成为SELECT ROUNDSUMAcctSessionTime/NULLIFCOUNTAcctSessionTime,0,2,作为来自radacct的结果,其中UserName='spatel'和SipResponseCode='200';
mysql> select sum(AcctSessionTime) div count(AcctSessionTime) as result from radacct where UserName='spatel' AND SipResponseCode='200';

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