SQL에서 GROUP BY 및 ORDER BY를 사용하여 집계된 결과를 정렬하는 방법

SQL에서는 특정 조건에 따라 데이터를 집계하고 정렬하는 것이 중요합니다. GROUP BY 절과 ORDER BY 절을 결합하여 그룹화된 데이터의 집계 결과를 원하는 대로 정리할 수 있습니다. 이 글에서는 GROUP BY 및 ORDER BY의 기본 사용법과 이를 결합하여 집계 결과를 정렬하는 방법을 구체적인 예제와 함께 자세히 설명합니다. 데이터베이스 관리 및 분석을 위한 필수 기술을 마스터하십시오.

목차

GROUP BY의 기본

GROUP BY 절은 특정 열을 기준으로 데이터를 그룹화하고 각 그룹에 대해 집계를 수행하는 데 사용됩니다. 이를 통해 전체 데이터셋이 아닌 개별 그룹에 대해 집계 함수를 적용할 수 있습니다.

기본 사용법

GROUP BY 절의 기본 사용 방법은 SELECT 문에서 지정한 열을 기준으로 데이터를 그룹화하고 집계 함수를 적용하는 것입니다. 예를 들어, 제품별로 판매 데이터를 집계해보겠습니다.

SELECT product_name, SUM(sales_amount) AS total_sales_amount
FROM sales
GROUP BY product_name;

집계 함수와의 결합

GROUP BY 절은 SUM, COUNT, AVG, MAX, MIN과 같은 집계 함수와 함께 사용됩니다. 이러한 함수는 각 그룹에 적용되어 필요한 통계 정보를 얻을 수 있습니다.

SELECT category, AVG(price) AS average_price
FROM products
GROUP BY category;

여러 열로 그룹화

더욱 상세한 그룹화를 위해 GROUP BY 절에 여러 열을 지정하여 데이터를 그룹화하는 것도 가능합니다. 다음 예제는 연도와 월별로 판매를 집계합니다.

SELECT year, month, SUM(sales_amount) AS monthly_sales_amount
FROM sales
GROUP BY year, month;

GROUP BY 절을 사용하면 데이터를 의미 있는 그룹으로 정리하고 각 그룹에 대한 집계 결과를 쉽게 얻을 수 있습니다. 다음으로, ORDER BY 절의 기본을 설명하겠습니다.

ORDER BY의 기본

ORDER BY 절은 SQL에서 특정 열의 값을 기준으로 쿼리 결과를 정렬하는 데 사용됩니다. 기본적으로 오름차순으로 정렬되지만 내림차순으로도 정렬할 수 있습니다. ORDER BY 절을 사용하여 쿼리 결과를 더 읽기 쉽게 정리할 수 있습니다.

기본 사용법

이 섹션에서는 ORDER BY 절을 사용하여 특정 열을 기준으로 데이터를 정렬하는 방법을 소개합니다. 다음 예제는 판매 데이터를 판매 금액을 기준으로 오름차순으로 정렬합니다.

SELECT product_name, sales_amount
FROM sales
ORDER BY sales_amount;

오름차순 및 내림차순 지정

기본적으로 ORDER BY 절은 오름차순(ASC)으로 정렬합니다. 내림차순으로 정렬하려면 DESC 키워드를 사용하십시오.

-- 오름차순 정렬(기본값)
SELECT product_name, sales_amount
FROM sales
ORDER BY sales_amount ASC;

-- 내림차순 정렬
SELECT product_name, sales_amount
FROM sales
ORDER BY sales_amount DESC;

여러 열로 정렬

ORDER BY 절은 여러 열을 지정하여 데이터를 정렬할 수 있습니다. 먼저 첫 번째 열로 정렬한 다음 두 번째 열로 정렬합니다.

SELECT product_name, category, sales_amount
FROM sales
ORDER BY category, sales_amount DESC;

이 예제에서는 카테고리별로 판매 데이터를 정렬하고, 각 카테고리 내에서 판매 금액을 내림차순으로 정렬합니다.

NULL 값 처리

ORDER BY 절을 사용할 때 NULL 값이 포함되어 있으면 기본적으로 오름차순(ASC)일 때는 첫 번째, 내림차순(DESC)일 때는 마지막에 배치됩니다. 또한 NULL 값을 처리하는 방법을 사용자 지정할 수도 있습니다.

-- 오름차순일 때 NULL 값을 마지막에 배치
SELECT product_name, sales_amount
FROM sales
ORDER BY sales_amount ASC NULLS LAST;

-- 내림차순일 때 NULL 값을 첫 번째에 배치
SELECT product_name, sales_amount
FROM sales
ORDER BY sales_amount DESC NULLS FIRST;

ORDER BY 절을 사용하여 쿼리 결과를 정리하면 데이터 분석 및 보고서 작성이 더욱 효율적이 됩니다. 다음으로 GROUP BY와 ORDER BY를 결합하는 방법에 대해 논의하겠습니다.

GROUP BY와 ORDER BY의 결합

GROUP BY 절과 ORDER BY 절을 결합하여 그룹화된 데이터의 집계 결과를 원하는 대로 정렬할 수 있습니다. 이 조합을 통해 데이터 분석 및 보고서 작성이 더욱 효과적으로 이루어집니다.

기본 조합

다음은 데이터를 그룹화하기 위해 GROUP BY 절을 결합하고 집계 결과를 정렬하기 위해 ORDER BY 절을 결합하는 기본 예제입니다. 다음 예제에서는 제품별로 총 판매 금액을 계산한 후 총 판매 금액의 내림차순으로 정렬합니다.

SELECT product_name, SUM(sales_amount) AS total_sales_amount
FROM sales
GROUP BY product_name
ORDER BY total_sales_amount DESC;

이 쿼리는 먼저 제품 이름별로 판매 금액을 집계한 다음, 집계 결과를 총 판매 금액의 내림차순으로 정렬합니다.

여러 열로 정렬

GROUP BY 절과 ORDER BY 절을 결합하여 여러 열을 기준으로 정렬하는 것도 가능합니다. 다음 예제는 연도와 월별로 판매를 집계한 후, 연도별 오름차순 및 월별 오름차순으로 결과를 정렬합니다.

SELECT year, month, SUM(sales_amount) AS monthly_sales_amount
FROM sales
GROUP BY year, month
ORDER BY year ASC, month ASC;

이 쿼리는 연도와 월별로 판매를 집계한 후, 연도와 월별 오름차순으로 결과를 정렬합니다.

집계 결과 기반 정렬

집계 함수의 결과를 기준으로 정렬하기 위해 ORDER BY 절을 사용하는 것도 가능합니다. 다음 예제에서는 각 카테고리의 평균 가격을 계산한 후 평균 가격의 내림차순으로 정렬합니다.

SELECT category, AVG(price) AS average_price
FROM products
GROUP BY category
ORDER BY average_price DESC;

이 쿼리는 카테고리별 제품의 평균 가격을 계산하고 평균 가격의 내림차순으로 결과를 정렬합니다.

HAVING 절과의 결합

GROUP BY된 데이터에 대해 조건을 지정하기 위해 HAVING 절을 사용하는 것도 가능합니다. 다음 예제에서는 총 판매 금액이 특정 기준을 초과하는 제품만을 대상으로 하여 결과를 총 판매 금액의 내림차순으로 정렬합니다.

SELECT product_name, SUM(sales_amount) AS total_sales_amount
FROM sales
GROUP BY product_name
HAVING SUM(sales_amount) > 10000
ORDER BY total_sales_amount DESC;

이 쿼리는 먼저 제품별로 판매 금액을 집계한 다음, 총 판매 금액이 10000을 초과하는 제품만 추출하여 결과를 총 판매 금액의 내림차순으로 정렬합니다.

GROUP BY와 ORDER BY를 효과적으로 결합하면 복잡한 데이터 집계 및 정렬이 가능해집니다. 다음으로는 실용적인 예제를 보여드리겠습니다.

실용적인 예제

다음은 GROUP BY와 ORDER BY를 결합하여 데이터를 집계하고 정렬하는 실용적인 SQL 쿼리 예제입니다. 실제 데이터베이스 작업에서 이러한 기술을 활용하는 방법을 이해하는 데 도움이 될 것입니다.

판매 데이터의 집계 및 정렬

다음 예제는 제품 카테고리별로 판매 데이터를 그룹화하고 각 카테고리의 총 판매 금액을 계산한 후, 총 판매 금액의 내림차순으로 결과를 정렬합니다.

SELECT category, SUM(sales_amount) AS total_sales_amount
FROM sales
GROUP BY category
ORDER BY total_sales_amount DESC;

이 쿼리는 각 카테고리의 총 판매 금액을 계산하고, 내림차순으로 정렬하여 가장 높은 판매를 기록한 카테고리를 상단에 표시합니다.

고객별 구매 빈도 및 평균 구매 금액 집계

다음 예제는 각 고객의 구매 횟수를 집계하고 평균 구매 금액을 계산한 후, 구매 빈도의 내림차순으로 결과를 정렬합니다.

SELECT customer_id, COUNT(*) AS purchase_frequency, AVG(purchase_amount) AS average_purchase_amount
FROM purchase_history
GROUP BY customer_id
ORDER BY purchase_frequency DESC;

이 쿼리는 각 고객의 구매 빈도와 평균 구매 금액을 계산하고, 구매 빈도의 내림차순으로 고객을 정렬합니다.

지역별 판매 분석 및 평균 판매

이 예제는 지역별로 판매를 그룹화하고 각 지역의 총 판매 금액과 평균 판매 금액을 계산한 후, 총 판매 금액의 내림차순으로 결과를 정렬합니다.

SELECT region, SUM(sales_amount) AS total_sales_amount, AVG(sales_amount) AS average_sales_amount
FROM sales
GROUP BY region
ORDER BY total_sales_amount DESC;

이 쿼리는 지역별로 총 판매 금액과 평균 판매 금액을 집계하고, 총 판매 금액의 내림차순으로 결과를 정렬하여 가장 높은 판매를 기록한 지역을 상단에 표시합니다.

월별 판매 및 판매 수량 집계

다음 예제는 월별로 판매를 그룹화하고 각 월의 총 판매 금액과 판매 수량을 계산한 후, 월별 오름차순으로 결과를 정렬합니다.

SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month, SUM(sales_amount) AS total_sales_amount, COUNT(*) AS sales_count
FROM sales
GROUP BY year, month
ORDER BY year ASC, month ASC;

이 쿼리는 연도와 월별로 판매를 집계한 후, 연도와 월별 오름차순으로 결과를 정렬합니다.

특정 조건을 가진 판매 데이터의 집계 및 정렬

다음 예제는 특정 조건을 충족하는 판매 데이터를 제품별로 집계하고 결과를 정렬합니다. 여기서는 판매 금액이 5000 이상인 제품만을 대상으로 합니다.

SELECT product_name, SUM(sales_amount) AS total_sales_amount
FROM sales
WHERE sales_amount >= 5000
GROUP BY product_name
ORDER BY total_sales_amount DESC;

이 쿼리는 판매 금액이 5000 이상인 제품의 총 판매 금액을 집계하고 결과를 내림차순으로 정렬합니다.

이러한 기술을 실제 비즈니스 운영에 활용하면 데이터 분석 및 보고서 작성이 더욱 효율적이 되어 더 깊은 인사이트를 제공할 수 있습니다. 다음으로 이 글의 내용을 요약하겠습니다.

요약

우리는 SQL에서 GROUP BY와 ORDER BY를 결합하여 데이터를 효율적으로 집계하고 특정 조건에 따라 정렬하는 방법을 배웠습니다. GROUP BY 절은 특정 열을 기준으로 데이터를 그룹화하고 집계 함수를 사용하여 각 그룹에 대한 통계 정보를 얻는 데 유용합니다. ORDER BY 절은 쿼리 결과를 특정 순서로 정리하여 분석 및 보고서 작성을 더 효과적으로 만듭니다.

구체적인 예제를 통해 다음 사항을 다루었습니다:

  • GROUP BY 절을 사용하여 데이터를 그룹화하고 SUM 및 AVG와 같은 집계 함수를 적용하는 방법.
  • ORDER BY 절을 사용하여 집계 결과를 오름차순 또는 내림차순으로 정렬하는 방법.
  • GROUP BY와 ORDER BY를 결합하여 복잡한 데이터 집계 및 정렬을 수행하는 방법.
  • HAVING 절을 사용하여 그룹화된 데이터에 대한 조건을 지정하는 방법.

이러한 기술을 활용하면 데이터베이스 관리 및 분석이 더욱 효율적이 되어 비즈니스 의사 결정을 지원하는 강력한 도구가 될 수 있습니다. SQL의 GROUP BY와 ORDER BY 사용을 마스터하여 더 깊은 데이터 인사이트를 얻으십시오.

목차