>데이터 베이스 >MySQL 튜토리얼 >SQL에서 성적 백분율을 어떻게 동적으로 계산할 수 있습니까?

SQL에서 성적 백분율을 어떻게 동적으로 계산할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-17 04:12:09987검색

How Can I Dynamically Calculate Grade Percentages in SQL?

SQL 동적 백분율 계산: 효율적이고 포괄적입니다.

질문:

사용자 이름과 성적이 포함된 SQL 테이블이 있으면 가능한 각 성적의 발생 비율을 계산해야 합니다. 문제는 이를 동적으로 구현하여 열린 텍스트 필드에서 응답성을 허용하는 것입니다.

해결책:

SQL 문을 사용하여 백분율을 계산하는 세 가지 주요 방법은 다음과 같습니다.

방법 1: 효율성 최적화

<code class="language-sql">select Grade, count(*) * 100.0 / sum(count(*)) over()
from MyTable
group by Grade</code>

이 방법은 "over()" 함수를 사용하여 전체 데이터 세트를 기준으로 백분율을 계산하는 가장 효율적인 방법입니다.

방법 2: 보편적 적용성

<code class="language-sql">select Grade, count(*) * 100.0 / (select count(*) from MyTable)
from MyTable
group by Grade;</code>

이 방법은 "over()" 기능 지원 여부에 관계없이 모든 SQL 버전에서 작동합니다. 테이블의 총 행 수를 기준으로 백분율을 계산합니다.

방법 3: 공통 테이블 표현식(CTE)

<code class="language-sql">with t(Grade, GradeCount) 
as 
( 
    select Grade, count(*) 
    from MyTable
    group by Grade
)
select Grade, GradeCount * 100.0/(select sum(GradeCount) from t)
from t;</code>

이 방법은 이전 두 방법보다 효율성이 떨어지지만 더 복잡한 계산에서는 더 유용할 수 있습니다. CTE를 활용하여 성적 수와 백분율을 독립적으로 계산합니다.

위 내용은 SQL에서 성적 백분율을 어떻게 동적으로 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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