2017-12-29 23 views
0

これは簡単かもしれませんが、私はSQLを初めて使ったので、これを正確に行う方法を見つけることができませんでした。SQL - Postgres - 最新の日付の最大値を返す

Existing table in SQL私の要件がある

は、次のとおりです:

は、私は次の表に持って

私は周波数ごとに、必要に(毎週、毎月&)、&その最新の日付のその最大のバージョン最新の日付を選びます。次に、すべてのDim &のレコードを選択します。ここで、日付とバージョンは以前の選択と同じです。

たとえば、最新の日付「&」の「月間」頻度の最大バージョン&単一の日付&「週間」頻度の最大バージョン。今度はすべてのDim(私たちの場合はA & B)の場合、Date &の頻度が以前と同じデータを返してください。

ので、合計4行があるでしょう:

  • 薄暗い ''
  • 月刊薄暗い '' 週刊
  • 薄暗い 'B' 月刊
  • 薄暗い 'B' 週刊

誰でもこの手伝いできますか?

私は次のクエリを使用してみましたが、それは正しい値を返さない:

SELECT Dim, Frequency, Date, Version 
       FROM sample_tbl 
       WHERE (Frequency, Date, 
         Version) IN ( 
select Frequency, max(Date), max(Version) 
from sample_tbl 
group by 1 
); 

答えて

2

あなたには、いくつかのマイナーなタイプミスと得る最大の日付と、その後最大バージョン

select s.Dim, s.Frequency, s.Date, max(s.Version) 
from sample_tbl s 
inner ( 
SELECT Dim, Frequency, max(Date) as max_date 
FROM sample_tbl 
group by Dim, Frequency 
) t on t.Dim = s.Dim, t.Frequency = s.Frequency t.max_date = s.Date 
GROUP BY s.Dim, s.Frequency, s.Date ; 
+0

ためサブクエリと結合を使用することができます固定されています( 'INNER JOIN'、' ON'条件の間に 'AND'を使います) – tonypdmtr

+0

あなたの返事をありがとう。 このクエリは、各Dimの最新のDate&Max Versionを返しています。私はDimだけが欲しい。Dateはグローバルな最新のDate for 'monthly' Frequency&Dateはグローバルな最新のDateで、 'Weekly' Frequencyの最大バージョンである。 –

+0

質問を更新してください..明確なデータサンプルと期待される結果を追加してください。 – scaisEdge

関連する問題