Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

SQL COUNT 함수와 GROUP BY 활용법: 트랜잭션별 주문 수 집계 예제

문제 상황

DB2의 TRANSACTIONS 테이블에서 특정 트랜잭션 ID(TRANSACTION_ID)에 할당된 주문 수(ORDER_ID)를 집계하여 조회하는 SQL 쿼리를 작성해야 합니다.

해결 방법

이 문제는 COUNT 함수와 GROUP BY 절을 함께 사용하면 간단하게 해결할 수 있습니다. GROUP BY 절이 데이터를 트랜잭션 ID별로 그룹화하고, COUNT 함수가 각 그룹에 속한 주문의 개수를 계산합니다.

쿼리 예제

SELECT TRANSACTION_ID, COUNT(ORDER_ID) FROM TRANSACTIONS
    GROUP BY TRANSACTION_ID

예시 데이터

예를 들어, DB2의 TRANSACTIONS 테이블에 아래와 같은 데이터가 저장되어 있다고 가정해 보겠습니다.

TRANSACTION_IDORDER_ID
IRN22345A23118
IRN22345A45901
IRN22345A67990
IRN56902A23119
IRN99781A67921
IRN56902A23167

쿼리 실행 결과

위 쿼리를 실행하면 트랜잭션 ID별로 주문이 몇 건씩 할당되어 있는지 다음과 같은 결과로 확인할 수 있습니다.

TRANSACTION_IDCOUNT(ORDER_ID)
IRN223453
IRN569022
IRN997811

결과 해석

실행 결과를 보면 트랜잭션 IRN22345에는 3건의 주문(A23118, A45901, A67990)이, IRN56902에는 2건의 주문(A23119, A23167)이, IRN99781에는 1건의 주문(A67921)이 각각 할당되어 있음을 알 수 있습니다.

이처럼 COUNT 함수와 GROUP BY 절을 조합하면 대량의 거래 데이터에서도 손쉽게 그룹별 레코드 수를 집계할 수 있습니다. 참고로 COUNT(*)는 NULL 값을 포함한 전체 행을 세는 반면, COUNT(컬럼명)는 해당 컬럼의 값이 NULL이 아닌 행만 계산한다는 점도 함께 기억해 두면 유용합니다.