SQL с условием на вычисляемое значение - PullRequest
3 голосов
/ 16 февраля 2011

У меня есть таблица с продуктами, их количеством и ценой.Мне нужно выбрать все записи, где средняя цена за статью находится в диапазоне.Мой запрос на данный момент:

SELECT productid,AVG(SUM(price)/SUM(amount)) AS avg 
FROM stock WHERE avg>=$from AND avg<=$to GROUP BY productid

Если сделать это, он говорит мне, что avg не существует.Также мне, очевидно, нужно сгруппировать, потому что сумма и среднее значение должны быть за вино

1 Ответ

3 голосов
/ 16 февраля 2011

Вы должны поместить его в предложение HAVING.Вы не можете фильтровать по результату агрегатов, используя WHERE.

MySQL позволяет ссылаться на псевдонимы столбцов в HAVING.Возможно, вам понадобится

SELECT 
      productid,
      AVG(price/amount) AS avg ,
      /*SUM(price)/SUM(amount) AS avg (<--- Or perhaps this?)*/
FROM stock 
GROUP BY productid
HAVING avg>=$from AND avg<=$to 

Но я не уверен, что именно вы пытаетесь сделать с AVG(SUM(price)/SUM(amount)). Можете ли вы показать некоторые примеры данных?

...