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

Este código sql arroja 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?

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 , ambos se usan para filtrar los loggings resultantes, pero HAVING se usa para filtrar los 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 

¿Te unirás a tirar para un sorteo con unir donde tenemos una condición para enumerar los precios que son mayores que la mediana de los precios que figuran 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