고객별로 총 주문 금액을 계산해서 보고 싶은데, 고객 이름까지 같이 출력하고 싶어서 작성했습니다.
코드:
CREATE TABLE orders (
customer_name VARCHAR(50),
order_amount INT
);
INSERT INTO orders VALUES ('김철수', 10000), ('김철수', 20000), ('이영희', 15000);
SELECT customer_name, order_id, SUM(order_amount)
FROM orders
GROUP BY customer_name;
오류: Column 'orders.order_id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
시도: SELECT 문에서 order_id를 지워봤더니 돌아가긴 하는데, 저는 주문 번호까지 같이 보고 싶어서 다시 넣었습니다.
질문: GROUP BY를 쓰면 왜 SELECT에 다른 컬럼을 그냥 넣을 수 없는 건가요?
댓글9
-
빗방울
2026.10.31 02:06
-
빗방울
2026.10.31 04:36
ㄹㅇㅋㅋ 저도 처음에 이거 때문에 한 시간 헤맸던 기억나네요
윈도우 함수가 훨씬 편하긴 함ㅋㅋ
-
빗방울
2026.10.31 05:20
맞음ㅋㅋ 걍 뇌 빼고 짜다 보면 무조건 한 번은 겪는 구간인 듯ㅋㅋ
-
빗방울
2026.10.31 05:54
ㄹㅇㅋㅋ 윈도우 함수 쓰면 쿼리 훨씬 깔끔해지더라고요
한번 써보시는 거 추천함ㅋㅋ
-
빗방울
2026.10.31 06:11
근데 주문번호까지 다 보려면 그룹화가 아니라 그냥 전체 조회가 맞지 않나 싶네요ㅋㅋ
차라리 JOIN을 쓰거나 그냥 정렬만 해서 보는 게 나을 듯함ㅋㅋ
-
빗방울
2026.10.31 06:52
근데 이거 MySQL 옛날 버전에서는 그냥 돌아가서 더 헷갈림ㅋㅋ 지금 쓰는 DB는 표준 지켜서 에러 내는 거라 그냥 GROUP BY에 order_id도 같이 넣어보세요ㅋㅋ
-
빗방울
2026.10.31 07:59
아니 근데 걍 집계함수 MAX나 MIN 같은 거 씌워서 대충 하나만 나오게 하면 돌아가긴 하더라고요ㅋㅋ 급하면 그렇게 해보셈ㅋㅋ
-
빗방울
2026.10.31 08:38
ㄹㅇㅋㅋ 급할 땐 그게 짱임
근데 나중에 데이터 꼬여서 멘붕 올 수도 있으니까 주의해서 쓰세요ㅋㅋ
-
빗방울
2026.10.31 08:03
근데 원래 그룹바이 쓰면 데이터가 뭉쳐지는 거라
개별 행 데이터인 주문번호는 원래 못 나오는 게 맞음ㅋㅋ
차라리 쿼리 두 번 나눠서 짜는 게 속 편할 듯함ㅋㅋ
모든 이야기1456
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
이거 처음 하면 진짜 킹받는 부분임ㅋㅋ
그룹화했는데 주문번호는 여러 개일 텐데 뭘 보여줘야 할지 몰라서 에러 내는 듯?
그냥 서브쿼리로 짜거나 윈도우 함수 써보세요.