使用WHERE和GROUP BY年(),月()的MySQL平均2列

时间:2010-11-08 17:17:23

标签: mysql

使用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)";

1 个答案:

答案 0 :(得分:0)

MySQL内置了average function,所以不需要在PHP方面进行这种计算,除非你有一些在查询中无法轻易表达的可怕业务需求。 / p>

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注入的开放性”攻击在这里持有。