-1

我想将这两个 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在第二个查询中正确使用子句。

谢谢你的帮助。

4

3 回答 3

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;
于 2013-10-30T13:52:56.633 回答
0

也许是这样的?

SELECT BY_YEAR, COUNT(), SUM('CURRENT_AWARD') FROM t GROUP BY rollup(by_year);

(我认为汇总可以依赖于 rdbms/版本...)

于 2013-10-30T13:54:23.543 回答
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因为此标识符仅包含字母和下划线。

于 2013-10-30T15:58:41.300 回答