
group by 에러 모음 zip...
Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ecommerce.od.order_detail_id' which is not functionally dependent on columns in GROUP BY clause
Error Code: 1052. Column 'product_id' in group statement is ambiguous
확실히 기초부터 공부하지 않으니까 공부할 때 막히는 부분이 많았다.
기초 공부를 확실히 하자...라는 다짐을 하게 되었다...
제품 별 매출 파악하기
매출 = 가격 * 수량 [ 칼럼명(테이블명) ]
revenue = price(products) * quantity(order_details)
이때 두 개의 테이블을 join 해야 하기 때문에 product_id로 join을 했다.
select *
from order_details od
join products p on od.product_id = p.product_id;

해당 표에서 product_id 값이 중복으로 들어가기 때문에 product_id를 기준으로 group by를 해서 정리하려고 했다.
근데... 에러가 뜨네..?
그래서 찾아본 group by 규칙
GROUP BY 규칙
- group by에 명시된 칼럼(열)만 select 할 수 있다.
- group by에 명시되지 않은 칼럼을 select 하려면 집계 함수를 사용해야 한다.
- 집계 함수 : SUM, AVG, MAX, MIN
select
od.product_id, -- GROUP BY에 포함된 열 (OK)
(od.quantity * p.price) as revenue -- GROUP BY에 포함되지 않은 열 (문제 발생)
from
order_details od
join
products p on od.product_id = p.product_id
group by
od.product_id;
최종 코드
select
od.product_id, -- GROUP BY에 포함된 열 (OK)
sum(od.quantity * p.price) as revenue -- GROUP BY에 포함되지 않은 열이지만 집계함수 사용 (OK)
from
order_details od
join
products p on od.product_id = p.product_id
group by
od.product_id;
하지만 만약 group by 없이 하려면 이렇게 쿼리를 짤 수도 있다.
select
od.product_id,
(od.quantity * p.price) as revenue -- 각 주문 항목별 수익 계산
from
order_details od
join
products p on od.product_id = p.product_id;
728x90
'대외활동 및 인턴 > 빅데이터 분석 학회 BDA' 카테고리의 다른 글
SQL 문제 풀이 (BDA학회 SQL 문법 기초 연습반) (0) | 2025.01.12 |
---|---|
전체 매출의 상위 20%를 차지하는 제품 구하기 (BDA학회 SQL 문법 기초 연습반) (0) | 2025.01.11 |
테이블 JOIN 할 때, 기준이 되는 테이블은? (BDA학회 SQL 문법 기초 연습반) (1) | 2024.11.21 |
코호트 분석과 검증 쿼리의 중요성 (BDA학회 SQL 문법 기초 연습반) (0) | 2024.11.17 |
[강연] 태블로 기초 이론 (1) | 2024.11.16 |