> 데이터 베이스 > MySQL 튜토리얼 > SQL SELECT 쿼리에서 일치하는 값의 백분율을 계산하는 방법은 무엇입니까?

SQL SELECT 쿼리에서 일치하는 값의 백분율을 계산하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-27 03:49:09
원래의
787명이 탐색했습니다.

How to Calculate the Percentage of Matching Values in a SQL SELECT Query?

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

설명:

  • OR보다 = 연산자 우선순위를 사용하면 비교가 먼저 평가됩니다.
  • count(value_a = value_b OR NULL)은 NULL 값이 무시됩니다.
  • (count(value_a = value_b OR NULL) * 100)을 count(*)로 나누면 백분율이 계산됩니다.
  • count(*)는 다음을 포함한 총 행 수를 나타냅니다. NULL 값.

결과:

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

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