Я изо всех сил пытаюсь написать этот запрос и не могу найти ответ, чтобы помочь мне в моем случае.
Рассмотрим следующую таблицу:
-----------------------------------------------
| 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
будет работать, но, конечно, это не так. Я знаю, что мне, вероятно, нужно использовать 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';
Других решений пока нет …