だから、私はSQLクエリに問題があります。
ドイツの都市の気象データを取得することです。4 つのテーブルがあります: staedte (主キー loc_id を持つ都市)、gehoert_zu (都市キーとこの都市に最も近い気象観測所のキー (stations_id) を含む)、wettermessung (すべての気象情報と観測所のキー値) および wetterstation (ステーション キーと場所を含む)。そして、私はPostgreSQLを使用しています
テーブルは次のようになります。
wetterstation
s_id[PK] standort lon lat hoehe
----------------------------------------
10224 Bremen 53.05 8.8 4
wettermessung
stations_id[PK] datum[PK] max_temp_2m ......
----------------------------------------------------
10224 2013-3-24 -0.4
staedte
loc_id[PK] name lat lon
-------------------------------
15 Asch 48.4 9.8
gehoert_zu
loc_id[PK] stations_id[PK]
-----------------------------
15 10224
私がやろうとしているのは、指定された日付 (1 か月または 1 日) に (たとえば) 最高気温を持つ都市の名前を取得することです。気象データはステーションにバインドされているため、実際にはステーションの ID を取得し、このステーションの都市に対応する都市を 1 つ選択する必要があります。考えられる質問は次のとおりです。「6 月に最も暑かったのはどの都市ですか?」そして、たとえば、測定された最高気温は測点番号 10224 でした。その結果、都市アッシュを取得したいと考えています。私がこれまでに得たものはこれです
SELECT name, MAX (max_temp_2m)
FROM wettermessung, staedte, gehoert_zu
WHERE wettermessung.stations_id = gehoert_zu.stations_id
AND gehoert_zu.loc_id = staedte.loc_id
AND wettermessung.datum BETWEEN '2012-8-1' AND '2012-12-1'
GROUP BY name
ORDER BY MAX (max_temp_2m) DESC
LIMIT 1
結果には 2 つの問題があります。1) 時間がかかりすぎます。テーブルはそれほど大きくはありません (都市には約 70k のエントリがあります) が、処理を完了するのに 1 ~ 7 分かかります (期間によって異なります) 2) 常に同じ都市が生成されます。どちらか正しい。
問題を十分に明確に説明できたことを願っています。どんな種類の助けも喜んで提供します。前もって感謝します !:D