SQL初学者です。
現在PostgreSQLを用いております。
下記の通りテーブルに対して、対象の日付より前3日間の金額を比較してランキングを付与したいです。
日付 | 金額 |
---|---|
2012-04-01 | 1510 |
2012-04-02 | 1520 |
2012-04-03 | 1525 |
2012-04-04 | 1530 |
2012-04-05 | 1525 |
2012-04-06 | 1510 |
ランキング付与後
日付 | 金額 | ランキング |
---|---|---|
2012-04-01 | 1510 | 1 |
2012-04-02 | 1520 | 1 |
2012-04-03 | 1525 | 1 |
2012-04-04 | 1530 | 1 |
2012-04-05 | 1525 | 2 |
2012-04-06 | 1510 | 3 |
上記のような処理をSQLではどのように書くのでしょうか。
下記クエリを試してみましたがうまくいきませんでした。
select a.日付 ,a.金額 ,rank() over (order by b.金額) as ランキング from table a inner join table b on a.日付>= b.日付 and a.日付- interval '3 day' <= b.日付 group by 1,2;
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/12 06:02