我正在努力编写此查询,并且找不到答案来帮助我解决我的情况。
请考虑下表:
-----------------------------------------------
| 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 |
-----------------------------------------------
我想检索 Value1 的平均值,其中日期为 2015-01-01
我以为
SELECT AVG(PAM_1) FROM MyTable WHERE DATE = 2015-01-01
会起作用,但当然不会。我知道我可能需要使用 HAVE,但我感到困惑,如果我也必须使用 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';