> 데이터 베이스 > MySQL 튜토리얼 > 가능한 모든 성적을 미리 정의하지 않고 SQL에서 성적 백분율을 어떻게 계산할 수 있습니까?

가능한 모든 성적을 미리 정의하지 않고 SQL에서 성적 백분율을 어떻게 계산할 수 있습니까?

DDD
풀어 주다: 2025-01-17 04:06:10
원래의
170명이 탐색했습니다.

How Can I Calculate Grade Percentages in SQL Without Predefining All Possible Grades?

SQL 문의 백분율 계산

질문:

SQL Server 테이블에 사용자가 포함되어 있습니다. 이름과 등급. 단일 SQL 문으로 가능한 모든 성적 값(예: A, B, C)의 백분율을 어떻게 계산할 수 있습니까? 또한, 사용자가 '합격/불합격' 또는 '없음'과 같은 개방형 응답을 입력할 수 있다는 점을 고려하면 가능한 모든 성적을 명시적으로 정의하지 않고도 이를 달성할 수 있습니까?

답변:

옵션 1: 사용 over()

select Grade, count(*) * 100.0 / sum(count(*)) over()
from MyTable
group by Grade
로그인 후 복사

이 솔루션은 가장 효율적이며 over() 함수를 활용합니다.

옵션 2: 범용(모든 SQL 버전)

select Grade, count(*) * 100.0 / (select count(*) from MyTable)
from MyTable
group by Grade;
로그인 후 복사

이 옵션은 모든 SQL 버전에서 작동하지만 이전 옵션보다 효율성이 떨어질 수 있습니다.

옵션 3: CTE 사용(최소 효율성)

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;
로그인 후 복사

이 방법은 유연한 솔루션을 제공하지만 효율성은 가장 낮습니다.

위 내용은 가능한 모든 성적을 미리 정의하지 않고 SQL에서 성적 백분율을 어떻게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿