SQL의 동일한 SELECT 문의 SUM()에서 백분율 계산
정수 필드 value_a 및 value_b가 있는 my_obj 테이블의 컨텍스트에서 , value_a가 value_b와 같은 행의 비율을 계산할 수 있습니다. 초기 쿼리에서는 저장 프로시저를 사용하여 이를 달성하려고 시도했지만 오류가 발생했습니다.
간소화되고 더욱 효율적인 솔루션
더 간단하고 빠른 접근 방식은 다음과 같습니다.
SELECT property_name ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
이 쿼리는 다음과 같습니다.
NULL 값 처리
이 솔루션은 잘못된 결과나 0으로 나누기 오류가 발생할 수 있는 원래 쿼리와 달리 NULL 값을 적절하게 처리합니다. .
소수점 보존 숫자
결과에서 소수점 이하 자릿수를 유지하려면 쿼리를 다음과 같이 수정하세요.
SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
이 변경에서는 분자에 100.0을 곱하여 숫자 정밀도를 적용한 다음 round()를 사용합니다. 소수점 이하 자릿수를 지정하려면 보존됩니다.
결론
간단한 쿼리 또는 소수 보존이 포함된 수정된 쿼리를 사용하면 동일한 SELECT 문 내에서 SUM()의 백분율을 효과적으로 계산할 수 있습니다. NULL 값을 적절하게 사용하세요.
위 내용은 단일 SQL SELECT 문의 COUNT()에서 백분율을 효율적으로 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!