Mysqli - 使用avg,sum,group by with two tables

时间:2015-07-20 15:47:01

标签: php mysqli

我知道mysqli查询的基础知识,但我遇到以下问题:

我有一个名为 caseStatistics 的大表,其中包含以下列:

idSchool (学校ID), timeReported (unix时间戳), timeRead (unix时间戳), timeSolved (unix timestamp)

我还有一个名为 school 的大表,其中包含以下列:

idSchool (学校ID),姓名(学校名称)

从这两张表格中,我想输出学校的名称,总案例,运营商对案件作出回应的平均时间(报告后),以及有多长时间的平均时间采取解决案件(报告后)。我还需要将结果按学校名称分组。

所以它应该输出这样的东西:

名称:BlaBlaSchool

案件总数:49

Avarage响应时间:2小时

Avarage解决时间:16小时

(每所学校)

我不需要协助将unix转换为天,小时,分钟等,只需要mysqli查询。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

您需要做的就是将函数添加到select语句的列列表中:

SELECT
  s.`name`,
  COUNT(*) AS totalCases,
  AVG(cs.`timeRead` - cs.`timeReported`) AS avgRespond,
  AVG(cs.`timeSolved` - cs.`timeReported`) AS avgSolved
FROM `caseStatistics` AS cs
LEFT JOIN `school` AS s ON s.`idSchool` = cs.`idSchool`
GROUP BY s.`name`

您可以使用HAVING关键字来缩小使用汇总值的结果(类似于WHERE)。另外,请务必查看:https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html