뭔가 간단한 문제를 해결하는 데 도움이 필요합니다. 매우 쉬운 질문이지만 SQL에서 다소 혼란 스럽습니다.GROUP BY/SQL의 집계 함수 혼동
이 SQL 쿼리는 Oracle에서 'GROUP BY 표현식이 아닙니다'오류를 발생시킵니다. 나는 왜 튜플의 속성에 의해 일단 그룹화되면 다른 속성에 더 이상 액세스 할 수 없다는 것을 알기 때문에 그 이유를 이해합니다.
SELECT *
FROM order_details
GROUP BY order_no
그러나이 하나되어 각 주문에 대한 ORDER_DETAILS 여러 튜플이 있다는 것을 가정하면 ....
SELECT SUM(order_price)
FROM order_details
GROUP BY order_no
그냥이에 대한 나의 이해를 콘크리트 작업을 수행 I 그룹 튜플 번 order_no에 따르면 그룹의 각 개별 튜플에 대한 order_price 속성에 계속 액세스 할 수 있지만 집계 함수 만 사용하면됩니까?
즉, SELECT 절에서 사용될 때 집계 함수는 '숨겨진'속성을보기 위해 그룹으로 드릴 다운 할 수 있습니다. 단순히 'SELECT order_no'를 사용하면 오류가 발생합니다.
해명에 도움을 주셔서 감사합니다. Google에서이 특정 질문에 대한 답변을 찾는 데 어려움을 겪었습니다. 당신이 GROUP BY를 사용할 때 크리스
GROUP BY가 실행 된 후에도 특정 order_no에 대한 모든 개별 튜플에 집계 함수가 계속 액세스 할 수 있습니다. 즉, SUM 함수는 여전히 각 튜플의 order_price 속성에 액세스 할 수 있습니다. 이러한 튜플은 order_no로 그룹화되었지만? – Chris
@Chris : 예, 다소 차이가 있습니다. GROUP BY는 테이블의 행을 그룹으로 나눌 수 있습니다. 각 그룹에는 GROUP BY 절에 나열된 열에 대해 동일한 값 세트가 있습니다. 그런 다음 집계는 지정된 열 중 하나에서 작업하며 집계는 그룹의 행에 대해 계산됩니다. 결과는 GROUP BY 열 값과 연관된 집계와 함께 그룹당 하나의 행으로 구성됩니다. Hummm ... 나는 그것이 명백 할 것이기를 바란다. .. –
그래, 나는 그것이 말할 수있는 한 완전히 그것을 깨끗하게했다. Jonathan과 감사의 말을 전하는 다른 사람들에게 감사드립니다. – Chris