使用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)";
答案 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注入的开放性”攻击在这里持有。