2012-04-15 4 views
0

아무도 말해 줄 수 열 조합의 요소 합산되지 않습니다MySQL의 SUM (열)이 코드는 왜

SELECT t.prob FROM 
(SELECT e1.evaled/IFNULL(NULLIF(e2.total,0),1) AS prob FROM 
    (SELECT COUNT(*) AS evaled FROM els WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els) AS e2) AS t 
UNION ALL (SELECT e1.evaled/IFNULL(NULLIF(e2.total,0),1) AS prob FROM 
    (SELECT COUNT(*) AS evaled FROM els2 WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els2) AS e2) 
UNION ALL (SELECT e1.evaled/IFNULL(NULLIF(e2.total,0),1) AS prob FROM 
    (SELECT COUNT(*) AS evaled FROM els3 WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els3) AS e2); 

이 대신 '확률값'의 합과 같은 출력을 생성을?

SELECT SUM(t.prob) FROM 
(SELECT e1.evaled/IFNULL(NULLIF(e2.total,0),1) AS prob FROM 
    (SELECT COUNT(*) AS evaled FROM els WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els) AS e2) AS t 
UNION ALL (SELECT e1.evaled/IFNULL(NULLIF(e2.total,0),1) AS prob FROM 
    (SELECT COUNT(*) AS evaled FROM els2 WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els2) AS e2) 
UNION ALL (SELECT e1.evaled/IFNULL(NULLIF(e2.total,0),1) AS prob FROM 
    (SELECT COUNT(*) AS evaled FROM els3 WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els3) AS e2); 

는 (코드는 기본적으로 세 개의 테이블 각각에 대하여 하나의 값을 포함하는 열의 확률값을 생성 엘스 els2하고 els3 및 I는 3 개 요소의 합을하고자하는 하나의 열로의 세 결합)

나는이 다른 코드를 생각해 냈습니다. 그것은 작동하고 그렇게 신경 끄시 고, 명확한 문의 :

SELECT SUM(t.evaled/IFNULL(NULLIF(t.total,0),1)) as sumatory FROM 
(SELECT evaled,total FROM 
(SELECT COUNT(*) AS evaled FROM els WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els) AS e2 
UNION ALL SELECT * FROM 
(SELECT COUNT(*) AS evaled FROM els2 WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els2) AS e2 
UNION ALL SELECT * FROM 
(SELECT COUNT(*) AS evaled FROM els3 WHERE evals=0) AS e1 
    INNER JOIN (SELECT COUNT(*) AS total FROM els3) AS e2) as t; 

답변

1

없음 솔루션 잘못 있는지 어떤 일이 일어나는지하지만 난 당신이 달성하려고하는 것을 얻을 생각합니다. 어떻게이 방법 같은 약 :

SELECT 
(SELECT COUNT(*)/(SELECT COUNT(*) FROM els) AS evaled FROM els WHERE evals=0) 
+ 
(SELECT COUNT(*)/(SELECT COUNT(*) FROM els2) AS evaled FROM els2 WHERE evals=0) 
+ 
(SELECT COUNT(*)/(SELECT COUNT(*) FROM els3) AS evaled FROM els3 WHERE evals=0) 
/3 

편집 : 그리고 당신은 당신이 마지막에 /3 필요 추측 평균 싶다면 ..

+0

브릴리언트. (고맙습니다) – NotGaeL