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