집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL을 사용하여 그룹화된 데이터에서 발생 횟수를 최적으로 계산하는 방법은 무엇입니까?
PostgreSQL 그룹 데이터의 발생 횟수를 효율적으로 계산
PostgreSQL은 그룹화된 테이블의 데이터 발생 횟수를 계산하는 다양한 방법을 제공합니다. 예를 들어 CASE WHEN 문을 사용하여 특정 값의 개수를 계산할 수 있습니다.
<code class="language-sql">SELECT sum(CASE WHEN question1 = 0 THEN 1 ELSE 0 END) AS ZERO, sum(CASE WHEN question1 = 1 THEN 1 ELSE 0 END) AS ONE, sum(CASE WHEN question1 = 2 THEN 1 ELSE 0 END) AS TWO, category FROM reviews GROUP BY category</code>
그러나 가능한 값의 개수가 늘어나면 CASE WHEN 문을 사용하는 것이 점점 번거로워집니다. PostgreSQL 9.4 이상에서는 집계 FILTER 옵션이 더 명확하고 잠재적으로 더 빠른 솔루션을 제공합니다.
<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 1;</code>
간결하게 하기 위해 단순화된 구문을 사용할 수 있습니다.
<code class="language-sql">SELECT category , count(question1 = 0 OR NULL) AS zero , count(question1 = 1 OR NULL) AS one , count(question1 = 2 OR NULL) AS two FROM reviews GROUP BY 1;</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);</code>
요약하자면 PostgreSQL은 조건부 SQL 계산을 위한 다양한 방법을 제공합니다. FILTER 옵션은 간결하고 효율적인 솔루션을 제공하는 반면, crosstab()
기능은 많은 옵션을 처리하는 데 최고의 성능을 제공합니다.
위 내용은 PostgreSQL을 사용하여 그룹화된 데이터에서 발생 횟수를 최적으로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!