MySql AVG () и ГДЕ

Я изо всех сил пытаюсь написать этот запрос и не могу найти ответ, чтобы помочь мне в моем случае.

Рассмотрим следующую таблицу:

-----------------------------------------------
| 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");

Что невозможно сделать с готовыми высказываниями.

1

Решение

Ваш запрос в основном в порядке. Ваша постоянная дата не является. Даты константы должны быть заключены в одинарные кавычки:

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector