我想將包含總和(或任何其他操作,如平均值,作爲最後一行)的SQL select查詢添加一行。在這裏它類似於GROUP BY ... WITH ROLLUP。爲每列添加一行總計
開始:比方說,我有一個表字段ID,A,B和C,所有這些都是數字。另外,ID不是唯一的,而是一個類別。我的SELECT查詢應該計算這些數字中有多少屬於指定的範圍。
因此,舉例來說,最終結果將是
(SELECT t.ID, a.ac, b.bc, c.cc FROM t
LEFT JOIN (SELECT COUNT(*) cc,ID FROM t WHERE A BETWEEN 2 AND 4 GROUP BY ID) AS a ON a.ID=t.ID
LEFT JOIN (SELECT AVG(B) cc,ID FROM t WHERE B BETWEEN 19 AND 40 GROUP BY ID) AS b ON b.ID=t.ID
LEFT JOIN (SELECT COUNT(*) cc,ID FROM t WHERE C BETWEEN 12 AND 14 GROUP BY ID) AS c ON a.ID=t.ID GROUP BY t.ID)
union
(select 'Overall',
(SELECT COUNT(*) cc FROM t WHERE A BETWEEN 2 AND 4),
(SELECT AVG(B) cc FROM t WHERE B BETWEEN 19 AND 40),
(SELECT COUNT(*) cc FROM t WHERE C BETWEEN 12 AND 14));
然而,該方案是不理想的,因爲我需要重新狀態的條件A,B和C.我想知道是否有簡單的方法來完成指定條件的同一個結果只有一次。
在此先感謝。
+1,你可以在第二個整體查詢中做同樣的事情,如果你想使用它,[**這裏是一個demo **](http://sqlfiddle.com/#!2/f7023/1)。 –
@MahmoudGamal謝謝:)我在看到你的評論之前編輯過,不是它與你的演示相同:) – fthiella