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 중국어 웹사이트의 기타 관련 기사를 참조하세요!