동일한 SELECT 쿼리의 SUM()에서 백분율 계산
정수 필드 value_a 및 value_b가 있는 my_obj 테이블에서, 목표는 value_a가 동일한 횟수의 백분율을 결정하는 것입니다. value_b.
잘못된 시도:
select sum(case when o.value_a = o.value_b then 1 else 0 end) as nb_ok, sum(case when o.value_a != o.value_b then 1 else 0 end) as nb_not_ok, compute_percent(nb_ok,nb_not_ok) from my_obj as o group by o.property_name;
nb_ok 열이 쿼리 내에 존재하지 않기 때문에 이 접근 방식은 실패합니다.
최적화됨 해결 방법:
SELECT property_name ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
설명:
결과:
property_name | pct --------------+---- prop_1 | 17 prop_2 | 43
분수 대체:
SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
이 변형 소수점 이하 자릿수를 보존하기 위해 분수를 도입합니다.
위 내용은 SQL SELECT 쿼리에서 일치하는 값의 백분율을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!