繁体   English   中英

MySQL使用WHERE和GROUP BY year(),month()的2列平均值

[英]MySQL average of 2 columns using WHERE and GROUP BY year(), month()

使用MySQL。 在按年(my_date)和月份(my_date)分组时,如何找到min_amount和max_amount列的平均值?

目前,我正在计划将列的总和放入数组中,然后使用PHP将它们平均。

有没有一种方法可以通过SQL查询获取2个分组列的平均值?

$sql = "SELECT
    SUM(min_amount) AS sum_min_amount,
    SUM(max_amount) AS sum_max_amount,
    my_date
FROM
    table_1
WHERE
    name = '$name'
AND
    year(my_date) BETWEEN '$start_year' AND '$end_year'
AND
    month(my_date) BETWEEN '$start_month' AND '$end_month'
GROUP BY
   year(my_date), month(my_date)";

MySQL具有内置的平均函数 ,因此,除非您有一些难以在查询中轻松表达的可怕的业务要求,否则就无需在PHP方面进行此计算。

SELECT YEAR(my_date) AS year,
    MONTH(my_date) AS month,
    AVERAGE(min_amount) AS min_avg,
    AVERAGE(max_amount) AS max_avg
FROM table_1
WHERE (my_date >= "$start_year-$start_month-01")
    AND (my_date <= "$end_year-$end_month-31")
    AND (name = $name)
GROUP BY year, month

您可能想要在查询外部正确构建数据字符串,并且最确定的是为此使用准备好的语句,因为通常的“您很容易接受SQL注入”攻击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM