四半期のmySQLによる演算グループを行うにはどのように?

Usep10:

私はそれらの両方の関係を持っていない2つのテーブルを持っています。

Table of income
Id      Category    Nominal    Description         Date
----    --------    --------    --------         --------
1         ADD         10000           Q1        2020-03-05
2         DD          15000           Q2        2020-05-11
3         PAD          5000           Q3        2020-08-10

Table of outcome
Id      Category    Nominal    Description         Date
----    --------    --------    --------         --------
1         ADD          7000           Q1        2020-03-20
2         DD          10000           Q2        2020-06-02
3         PAD          2000           Q3        2020-08-28

だから、私は、四半期ごとの結果グループからの名目で収入から公称の引き算をしたいです。

ここに私のクエリは次のとおりです。

CREATE view Total AS
    SELECT QUARTER(outcome.date) AS Qperiod, income.nominal-outcome.nominal AS remain
    FROM income, outcome
    GROUP BY YEAR(outcome.date), QUARTER(outcome.date)

この結果は、すべての結果の名目によって収入テーブル減算のその最初の行を記述し、以下に示します。

Qperiod    remain    
----      -------- 
1             3000
2                0
3             8000

誰の助けに私はこの問題を解決するにはできますか?

ニック:

あなたは何も持っていないJOINの各行はので、あなたのクエリで条件をincomeのすべての行にマッチしますoutcomeあなたは何の集計機能を持たないので、これは効果的に、ランダム行からという意味outcomeの各行から減算されますincomeあなたは近代的、明示的に使用すべきJOIN適切に構文とプットのJOIN年と四半期は、両方のテーブルに同じであるということです条件:

CREATE view Total AS
    SELECT QUARTER(outcome.date) AS Qperiod, income.nominal-outcome.nominal AS remain
    FROM income
    JOIN outcome ON YEAR(outcome.date) = YEAR(income.date)
                AND QUARTER(outcome.date) = QUARTER(income.date)
    GROUP BY YEAR(outcome.date), QUARTER(outcome.date)

出力:

Qperiod     remain
1           3000
2           5000
3           3000

SQLFiddleのデモ

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=279974&siteId=1