【问题标题】:Find average (AVG) when year selected from mysql with php使用php从mysql中选择年份时查找平均值(AVG)
【发布时间】:2017-08-21 13:03:54
【问题描述】:

我有一张表,其中包含 2017 年 1 月至 12 月的 12 个值。

问题是,我们现在才到 8 月,而我目前的代码(在 2016 年可以正常工作,因为所有值都不为空)一直将值除以 12..当它需要为 8(8 月),然后是 9 月的 9等等。

任何想法如何获得我需要的平均值而不是 12 个月的平均值。

$sql = "SELECT ROUND(AVG(valuations),2) AS value_sum FROM office_figures2016 where date_figures =2017";

$result = $conn->query($sql);


if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {


        echo "<td> " . $row["value_sum"]."</td>";

【问题讨论】:

标签: php mysql average


【解决方案1】:

为什么不在您的请求中排除 null 条目?

$sql = "SELECT ROUND(AVG(valuations),2) AS value_sum FROM office_figures2016 WHERE date_figures = 2017 AND valuations != NULL";

【讨论】:

  • 这在平均单元格中给了我一个没有值(空格)。
  • @glen 为什么在删除相关部分的同时尝试编辑我的答案?您是否尝试过我的查询或您用 替换我的答案的版本?
  • 我更新了你的帖子,而不是我的..admin 错误。有什么理由为什么它是空白的?我发现即使我的 7 月 - 12 月为空,它们也可能不为空.. 不知道为什么
  • @Glen 你不能检查他们有什么价值吗?
  • 是的,我最后使用了这个,因为值不是空的(即使是空的)。 $sql = "SELECT ROUND(AVG(valuations),2) AS value_sum FROM office_figures2016 WHERE date_figures =2017 AND 估值不为空且估值!= '' ";
【解决方案2】:

如果您没有任何属于未来日期的数据,那么您可以使用以下查询来获取运行平均值:

$sql = "SELECT ROUND(SUM(valuations)/MONTH(NOW()), 2) AS value_sum 
    FROM office_figures2016 
    WHERE date_figures =2017";

【讨论】:

  • 注意:尝试在 C 中获取非对象的属性:我在上面的查询中包含了其余部分,以查看是否应该更改被跟踪到错误代码行的“if”语句
  • 不,同样的错误。月(现在)做什么?如果有帮助,我的日期是使用 datepicker 预先输入的,没有时间戳?
  • 打错字了,现在试试?
  • 太棒了,谢谢,我确实玩过括号,但我无法将它们放在正确的位置......
  • 我已经计算出这显然将我拥有的条目数除以(现在)的实时日期..我将如何添加实际在表中的条目...这样可以吗回到划分非空条目的查询?
【解决方案3】:

这对我有用。似乎这一切都与 null 而不是 null 。数据库没有将我的空单元格视为 null,因此一直返回 12 行而不是所需的 6 行。

SELECT * FROM office_figures 2016 WHERE date_figures=2017 AND firsts IS NOT NULL AND firsts != ''

感谢 David Alves 和 ks john,他们不知道我的细胞不是空的。

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 2021-10-20
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2020-11-12
    • 2023-04-04
    相关资源
    最近更新 更多