2017-12-31 51 views
3

문제를 살펴보십시오. 재미있을 것입니다. 나는 member 테이블에 result이라는 컬럼이 있습니다. 이 결과 열에서 세 가지 값을 사용할 수 있으며 한 번에 하나의 값만 사용할 수 있습니다. 가능한 값은 W, LV입니다. 여기서는 필요하지 않으므로 V은 잊어 버리십시오.웅변의 비율을 계산하는 방법은 무엇입니까?

내가 5 행을 가지고 있고 3 행에 W이 있고 1 행에 L이 있고 마지막 하나가 V입니다.

그래서 여기에 3W와 1L 중 4 개 (W + L 함께). 따라서 W의 비율은 75 %입니다. mysql을 사용하여 어떻게 계산할 수 있습니까? 그리고 능변을 사용하는 것이 가능하면 더 좋을 것입니다.

현재, 나는 PHP는 루프 3. 실행 그리고 내가 비율을 계산하고 결과 컬럼의 값에 따라 모든 행 2. 얻기이 솔루션 1을 사용하고 있습니다. 잘 작동합니다. 하지만 더 좋은 해결책이 있다면 그것을 찾을 수 없을 것입니다. :)

희망 사항이 문제가 있습니다. 미리 감사드립니다.

답변

3

, 이렇게 :

$wl = Member::whereIn('result', ['W', 'L'])->count(); 
$total = Member::count(); 
$percent = $wl/$total * 100; 

이 훨씬 더 효율적 실제로 DB에서 모든 레코드를 검색하는 것보다 될 것입니다.

+2

완벽한 것 이상. 하지만 그것을 올바르게 계산하기 위해 좀 더 편집해야했지만 당신은 보스입니다. :) 감사합니다 편집 제가 수행했습니다 '$ wl = Member :: where ('user_id', 1) -> whereIn ('result', [ 'W']) -> count(); $ total = Member :: where ('user_id', 1) -> 여기서 'result', '! =', 'V') -> count(); $ percent = $ wl/$ total * 100; ' – sadek

3

귀하의 질문은 좀 애매하지만, 내가 무엇을보고에서 COUNT 기능은 여기에 충분합니다 : 물론

SELECT 
    100.0 * COUNT(W)/COUNT(*) AS w_pct, 
    100.0 * COUNT(L)/COUNT(*) AS l_pct 
FROM yourTable; 

, 당신은 이미 우리가 포함하는 위의 쿼리를 수정할 수 집계를 수행하는 경우 GROUP BY. 당신이 순수 웅변 솔루션을 원하는 경우