Что не так с этим запросом в mysqlworkbench? - PullRequest
0 голосов
/ 16 марта 2020
SELECT Product_Finish AS "Desk Finish",    
  AVG(Standard_Price) AS "Average Price"
FROM Product_T
WHERE "Average Price">300
ORDER BY "Average Price" DESC;

Что я сделал не так?

1 Ответ

1 голос
/ 16 марта 2020

Существует несколько проблем:

  • используется агрегатная функция AVG(), но в запросе нет GROUP BY предложения

  • the where предложение относится к агрегированному столбцу; для этого идентификатора

  • необходимо заключить в двойные кавычки условие having; MySQL вместо них нужны обратные пометки

Итак:

SELECT Product_Finish AS `Desk Finish`, AVG(Standard_Price) AS `Average Price`
FROM Product_T
GROUP BY Product_Finish
HAVING `Average Price`> 300
ORDER BY `Average Price` DESC;

Еще лучше было бы использовать идентификаторы, которые не требуют цитирования. Также стоит отметить, что, в отличие от MySQL, не все базы данных поддерживают псевдонимы столбцов в предложении having (в этом случае вам нужно повторить агрегатное выражение). Это стандарт SQL:

SELECT Product_Finish AS desk_finish, AVG(Standard_Price) AS average_price
FROM Product_T
GROUP BY Product_Finish
HAVING AVG(Standard_Price) > 300
ORDER BY average_price DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...