-1

これら 2 つの SQL クエリを 1 つに結合したいと考えています。

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;

最初のクエリは、助成金の総数と使用された合計を示します。2番目は同じですが、年ごとです。

これは可能ですか?AS最初のクエリで 2 つのクエリを 1 つに結合しましたが、2 番目のクエリで句を適切に使用する方法がわかりません。

助けてくれてありがとう。

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 に答える