我正在尝试向包含总和(或任何其他操作,例如平均值)作为最后一行的 SQL 选择查询添加一行。在这方面,它类似于 GROUP BY ... WITH ROLLUP。
首先:假设我有一个表 t,其中包含字段 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 的条件。我想知道是否有一种简单的方法可以只指定一次条件来完成相同的结果。
提前致谢。