0

私は次の2つのテーブルを持っています

idkm日付
1 22.1 2012-04-15
2 52.1 2012-04-14
3 72.1 2012-03-15
4 54.1 2012-03-14

idlt日付
1 16.4 2012-04-03
2 22.6 2012-04-29
3 45.9 2012-03-2
4 13.1 2012-03-31

この表から、月ごとのレートを取得する必要があります。つまり、1か月のkm数をlt数で割った値です。クエリで集計関数を使用して月ごとのkmの合計を取得でき、他のクエリではltの合計を取得できることを知っています。

SELECT SUM(km) FROM kilometers GROUP BY MONTH(date)
SELECT SUM(lt) FROM gasoline GROUP BY MONTH(date)

次に、グループ化された月ごとにkm/ltを手動で分割できます。だから問題は、私は簡単なクエリでそれを行うことができますか?データベースの構造を変更する必要がありますか?

助けていただければ幸いです、ありがとう。

4

1 に答える 1

1

月/年ごとにテーブルデータを結合できるはずです。lt1か月間0またはnullの状況を処理する必要があります。複数年のデータを適切に処理できるように、YEARでグループ化することもできます。

SELECT k.year, k.month, k.km / g.lt
FROM (SELECT YEAR(date) as year, MONTH(date) as month, SUM(km) as km
      FROM kilometers GROUP BY YEAR(date), MONTH(date)) k
JOIN (SELECT YEAR(date) as year, MONTH(date) as month, SUM(lt) as lt
      FROM gasoline GROUP BY YEAR(date), MONTH(date)) g
  ON k.month = g.month AND k.year = g.year

サンプル出力:

YEAR  MONTH  K.KM / G.LT
----  -----  --------------
2012  3      2.138982929974
2012  4      1.90256407322

デモ:http ://www.sqlfiddle.com/#!2 / c2942 / 6

于 2012-04-18T22:00:12.107 に答える