집 >데이터 베이스 >MySQL 튜토리얼 >단일 SQL 문에서 여러 개수를 효율적으로 쿼리하는 방법은 무엇입니까?
단일 SQL 문에서 여러 카운트를 효율적으로 쿼리
데이터베이스 프로그래밍에서는 개수, 평균, 합계와 같은 집계 데이터를 검색하는 것이 중요한 경우가 많습니다. 단일 쿼리에 여러 유형의 개수가 필요한 경우 조건부 집계와 그룹화를 조합하여 이를 수행할 수 있습니다.
다음 쿼리를 고려해 보세요.
<code class="language-sql">SELECT distributor_id, COUNT(*) AS TOTAL, COUNT(*) WHERE level = 'exec', COUNT(*) WHERE level = 'personal'</code>
이 쿼리는 각 유통업체에 대해 다음 정보를 반환하도록 설계되었습니다.
그러나 이 쿼리는 여러 행의 결과를 생성하며 각 그룹은 하나의 행을 계산합니다. 이를 방지하려면 필요한 모든 개수에 대해 단일 행을 반환하는 방식으로 쿼리를 구성해야 합니다.
이 문제를 해결하기 위해 CASE 문을 집계 함수(예: COUNT)와 함께 사용할 수 있습니다. CASE 문을 사용하면 표현식을 조건부로 평가하고 해당 값을 반환할 수 있습니다. 이를 통해 하나의 쿼리에서 특정 기준에 따라 레코드를 계산할 수 있습니다.
다음 수정된 쿼리에는 CASE 문이 포함되어 있습니다.
<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>
CASE 문을 사용하면 집계에 조건을 적용할 수 있습니다. WHEN 절은 조건을 지정하고, THEN 및 ELSE 절은 계산할 해당 값을 정의합니다. SUM 함수는 각 조건문에서 반환된 값을 합산합니다.
이 접근 방식에는 여러 가지 장점이 있습니다.
그러나 조건부 집계를 사용하여 대규모 데이터 세트를 처리할 때는 성능에 미치는 영향을 고려하는 것이 중요합니다. 이 경우 쿼리를 최적화하기 위해 인덱스나 기타 기술을 사용해야 할 수도 있습니다.
위 내용은 단일 SQL 문에서 여러 개수를 효율적으로 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!