>데이터 베이스 >MySQL 튜토리얼 >단일 SQL 쿼리에서 여러 카운트를 효율적으로 얻으려면 어떻게 해야 합니까?

단일 SQL 쿼리에서 여러 카운트를 효율적으로 얻으려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-20 16:21:14256검색

How Can I Efficiently Get Multiple Counts from a Single SQL Query?

쿼리 설계 최적화: 단일 SQL 문을 사용하여 여러 카운트 달성

데이터 분석에서는 표의 다양한 조건에 대한 여러 개수를 얻어야 하는 경우가 많습니다. 간단한 쿼리는 단일 개수를 반환할 수 있지만 단일 쿼리에서 여러 개수를 가져오려면 좀 더 미묘한 접근 방식이 필요합니다.

쿼리 구조:

이를 위해 집계 함수와 결합된 CASE 문을 사용할 수 있습니다. 이 방법은 일부 데이터베이스 시스템에서 PIVOT 기능을 시뮬레이션합니다. 생성된 쿼리는 다음 형식을 취합니다.

<code class="language-sql">SELECT distributor_id,
    COUNT(*) AS total,
    SUM(CASE WHEN level = 'exec' THEN 1 ELSE 0 END) AS ExecCount,
    SUM(CASE WHEN level = 'personal' THEN 1 ELSE 0 END) AS PersonalCount
FROM yourtable
GROUP BY distributor_id</code>

지침:

  • COUNT(*) 함수는 각 distributor_id에 대한 총 행 수를 계산합니다.
  • CASE 문은 조건부 논리를 사용하여 level 열을 기준으로 행 수를 늘립니다. level이 'exec'이면 ExecCount이 증가하고, level가 '개인용'이면 PersonalCount이 증가합니다.
  • GROUP BY 절은 결과를 distributor_id별로 그룹화하여 각 배포자에 대한 고유한 개수를 보장합니다.

이 방법의 장점:

  • 효율성: 이 쿼리는 한 번의 실행으로 여러 개수를 검색하므로 여러 쿼리나 복잡한 하위 쿼리가 필요하지 않습니다.
  • 명확성: 쿼리 구조는 간단하고 이해하기 쉽고 유지 관리 및 수정이 쉽습니다.
  • 유연성: CASE 문은 향후 요구 사항을 충족하기 위해 다른 조건이나 수준을 수용하도록 수정할 수 있습니다.

위 내용은 단일 SQL 쿼리에서 여러 카운트를 효율적으로 얻으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.