php - MySql AVG() 和 WHERE

标签 php mysql where-clause average

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

考虑下表:

-----------------------------------------------
| 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';

关于php - MySql AVG() 和 WHERE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162615/

相关文章:

javascript - 斯堪的纳维亚字符 åäö 在 AJAX 聊天框中消失

php - 谷歌 API OAuth 2.0 CURL 返回 "Required parameter is missing: grant_type"

PostgreSQL 中的 SQL JOIN - WHERE 子句中的执行计划与 ON 子句中的执行计划不同

php - FFMPEG&PHP : Videos modified by FFMPEG are not played in Firefox

php - 获取 php 数组的查询结果并检查其中是否有变量

mysql - 非主 Grails 的重复条目问题

mysql - 多个帐户的总和值

php - Nginx, PHP, Apache, MySQL - 当加载大量页面时所有 php 请求都在等待(仅针对请求客户端)

select - Maximo:保存动态查询吗?

sql - 这不会返回任何内容。为什么?