我想将这两个SQL查询合并为一个。
SELECT COUNT() as total_grants, SUM("CURRENT_AWARD") as total_spent FROM t;
SELECT YEAR, COUNT(), SUM('CURRENT_AWARD') FROM t GROUP BY YEAR AS by_year;
第一个查询显示授权总数和总支出。第二个是相同的,但是按年。
这可能吗?我已经在第一个查询中将两个查询合并为一个,但我无法弄清楚如何在第二个查询中正确使用AS
子句。
感谢您的帮助。
答案 0 :(得分:1)
如何使用CROSS JOIN
SELECT YEAR,
COUNT(*),
SUM('CURRENT_AWARD') ,
t2.total_grants,
t2.total_spent
FROM t
CROSS JOIN
(
SELECT COUNT(*) as total_grants,
SUM("CURRENT_AWARD") as total_spent
FROM t
) t2
GROUP BY YEAR;
答案 1 :(得分:0)
也许是这样的?
SELECT BY_YEAR, COUNT(), SUM('CURRENT_AWARD') FROM t GROUP BY rollup(by_year);
(我认为汇总可以是rdbms /版本依赖...)
答案 2 :(得分:0)
试试这个。
SELECT YEAR, COUNT(*) as total_grants, SUM(CURRENT_AWARD) as total_spent
FROM t
GROUP BY YEAR;
COUNT(*)
会计算表t中的所有行,包括NULL
的行。如果要忽略NULL
行,请计算特定列。例如,COUNT(CURRENT_AWARD)
。
您不需要CURRENT_AWARD
周围的引号,因为此标识符仅包含字母和下划线。