2017-05-05 3 views
-1

を持っていた最後の30のユニークな日がありますされて取得することは同じのためのいくつかの行をすることができ日付(そうリミット30を使用することはできません)私は(ない過去30日分)のデータを持っている最新の30日間を取得するクエリを実行するために</p> <p>をしようとしていたデータ

私のデータは、書式設定、次があります。

date   count 
2017-05-05 111 
2017-05-05  78 
2017-04-28  54 
2017-01-11 124 

は私がデータを最新の30日間を取得するWHERE句を追加するための方法はありますか?私が正しく理解していれば

+0

?答えはあなたの答えに応じて変わるかもしれません。また、同じ日に複数のエントリーがある場合は、その日のすべてのエントリーを希望しますか? – ollie

+0

@ollieそれはpostgresです、悪いタグも更新します – RomainD

+0

質問を編集して、過去30日間の一意の「日付」を指定し、過去30日以内のレコードは表示しません。 – philshem

答えて

-1

わからない、しかし...

(これは、最新の2日です):

with t(date, count) as(
    select '2017-05-05',  111 union all 
    select '2017-05-05',  78 union all 
    select '2017-04-28',  54 union all 
    select '2017-01-11',  124 
) 
select date from t group by date order by date desc limit 2 
-1
select * from tablename 
where datecolumn in (select TOP 30 max(datecolumn) from tablename group by datecolumn) 
+0

OPは過去30日分、最後の30日分は希望しません – philshem

+0

これはどのように表示されますか? –

-1

あなたは同じdateを持つすべての行を、必要な場合あなたのテーブルの最後の30個の異なる日付として、dense_rank() window function

select (t).* 
from  (select t, dense_rank() over (order by date desc) 
      from t) s 
where dense_rank <= 30 

またはIN、サブ選択して:あなたはどのようなデータベースを使用している

select * 
from t 
where date in (select distinct date 
       from  t 
       order by date desc 
       limit 30) 

http://rextester.com/ESDLIM64772

関連する問題