집 >데이터 베이스 >MySQL 튜토리얼 >SQL 쿼리에서 조건부 발생을 효율적으로 계산하려면 어떻게 해야 합니까?
SQL에서 조건부 발생을 효율적으로 계산
이 가이드에서는 SQL 쿼리 내에서 조건부 데이터 발생 횟수를 특정 열별로 그룹화하는 다양한 방법을 살펴봅니다. 최적의 접근 방식은 데이터베이스 시스템에 따라 다릅니다.
PostgreSQL 9.4 이상: FILTER
절
PostgreSQL 9.4 및 후속 버전은 FILTER
집계 함수 내의 COUNT
절을 사용하여 가장 효율적이고 읽기 쉬운 솔루션을 제공합니다.
<code class="language-sql">SELECT category, COUNT(*) FILTER (WHERE question1 = 0) AS zero, COUNT(*) FILTER (WHERE question1 = 1) AS one, COUNT(*) FILTER (WHERE question1 = 2) AS two FROM reviews GROUP BY category;</code>
PostgreSQL을 위한 간결한 대안
더 짧은 구문을 사용해도 동일한 결과를 얻을 수 있습니다.
<code class="language-sql">SELECT category, COUNT(CASE WHEN question1 = 0 THEN 1 END) AS zero, COUNT(CASE WHEN question1 = 1 THEN 1 END) AS one, COUNT(CASE WHEN question1 = 2 THEN 1 END) AS two FROM reviews GROUP BY category;</code>
광범위한 데이터에 대한 최적의 크로스탭
특히 다양한 범주에 대한 포괄적인 크로스탭 쿼리의 경우 crosstab()
기능이 뛰어난 성능을 제공합니다.
<code class="language-sql"> SELECT * FROM crosstab( 'SELECT category, question1, COUNT(*) AS ct FROM reviews GROUP BY 1, 2 ORDER BY 1, 2', 'VALUES (0), (1), (2)' ) AS ct (category TEXT, zero INT, one INT, two INT); ``` This approach dynamically handles a larger number of categories more efficiently than the previous methods.</code>
위 내용은 SQL 쿼리에서 조건부 발생을 효율적으로 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!