group_concat avg mysql sql aggregate-functions

mysql - avg - Cómo evitar el error "las funciones agregadas no están permitidas en DÓNDE"



sum mysql (3)

Este código sql lanza un

Las funciones agregadas no están permitidas en DONDE

SELECT o.ID , count(p.CAT) FROM Orders o INNER JOIN Products p ON o.P_ID = p.P_ID WHERE count(p.CAT) > 3 GROUP BY o.ID;

¿Cómo puedo evitar este error?


¿Se realizará la combinación automática para unir con la combinación donde tenemos una condición para enumerar los precios que son mayores que la mediana de los precios listados en la tabla de pedidos?

P.ej. order_item, Order_Price

Dado que las funciones agregadas no se pueden usar en una cláusula WHERE>

select a.order_item_product_price, count(distinct a.order_item_product_price) from default.order_items a , default.order_items b where a.order_item_product_price = b.order_item_product_price group by a.order_item_product_price having a.order_item_product_price > appx_median(b.order_item_product_price) order by a.order_item_product_price limit 10


Reemplace la cláusula WHERE con HAVING , así:

SELECT o.ID , count(p.CAT) FROM Orders o INNER JOIN Products p ON o.P_ID = p.P_ID GROUP BY o.ID HAVING count(p.CAT) > 3;

HAVING es similar a WHERE , es decir, ambos se usan para filtrar los registros resultantes, pero HAVING se usa para filtrar datos agregados (cuando se usa GROUP BY ).


Use la cláusula HAVING lugar de WHERE

Prueba esto:

SELECT o.ID, COUNT(p.CAT) cnt FROM Orders o INNER JOIN Products p ON o.P_ID = p.P_ID GROUP BY o.ID HAVING cnt > 3