source

"집약 함수는 WHERE에서 허용되지 않습니다" 오류를 방지하는 방법

gigabyte 2023. 1. 22. 22:29
반응형

"집약 함수는 WHERE에서 허용되지 않습니다" 오류를 방지하는 방법

이 SQL 코드는

WHERE에서는 집계 함수를 사용할 수 없습니다.

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;

어떻게 하면 이 오류를 피할 수 있을까요?

교체하다WHERE을 조항으로 하다.HAVING, 다음과 같이 합니다.

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와 유사하다WHERE둘 다 결과 레코드를 필터링하기 위해 사용됩니다.HAVING집약된 데이터를 필터링하기 위해 사용됩니다(경우에 따라).GROUP BY사용되고 있습니다).

사용하다HAVING대신 조항WHERE

이것을 시험해 보세요.

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

주문표에 기재되어 있는 가격의 중앙값보다 큰 가격을 기재하는 조건이 있는 경우, 셀프 조인은 조인과 함께 토스를 할 수 있습니까?

예: order_item, Order_Price

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

언급URL : https://stackoverflow.com/questions/20991729/how-to-avoid-error-aggregate-functions-are-not-allowed-in-where

반응형