0
上の要素を合計しません誰が私を伝えることができ、なぜこのコード:MySQLのSUM(column)列組合
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);
ではなく、「PROB」の合計のこの同じ出力を生成しますか?
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);
(コードは基本的に3つのテーブルのELSの各々に対してちょうど一つの値、els2とels3を含む列PROBを作成し、私はその3つの要素の和を先からわずか一つの列にそれらのうち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;
ブリリアント。 (ありがとうございました) – NotGaeL