MySql AVG() 和 WHERE

MySql AVG() and WHERE

我正在为如何编写此查询而苦苦挣扎,无法找到对我的案例有帮助的答案。

考虑以下 table:

-----------------------------------------------
| ID | Value1  | Value2 | Value3 | Date       |
-----------------------------------------------
| 1  | 10      | 23     | 30     | 2015-01-01 |
-----------------------------------------------
| 1  | 11      | 33     | 40     | 2015-02-01 |
-----------------------------------------------
| 2  | 26      | 93     | 20     | 2015-01-01 |
-----------------------------------------------
| 2  | 11      | 33     | 50     | 2015-02-01 |
-----------------------------------------------

我想检索日期为 2015-01-01 的 Value1 的平均值

我以为

SELECT AVG(PAM_1) FROM MyTable WHERE DATE = 2015-01-01

可以,但当然不行。我知道我可能需要使用 HAVING 但我很困惑是否还必须使用 GROUP BY 以及是否需要 AS(某物)部分。

编辑

问题与查询无关。我通过这样的变量提供日期:

$sth = $db->prepare("SELECT AVG(Value1) FROM MyTable WHERE DATE = $date");

准备好的语句无法做到这一点。

您的查询基本没问题。你的日期常数不是。日期常量应该用单引号引起来:

SELECT AVG(PAM_1)
FROM MyTable
WHERE DATE = '2015-01-01';

如果日期可以包含时间部分,那么以下是处理此问题的最佳方法:

SELECT AVG(PAM_1)
FROM MyTable
WHERE DATE >= '2015-01-01' AND DATE < '2015-01-02';