質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

3回答

1236閲覧

postgres 抽出条件がわからない

coko1

総合スコア276

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2017/06/02 04:41

編集2017/06/02 07:14

sql

1data_name : data_no : create_date : data_value 2test1 01 2017/06/01 1 3test1 02 2017/06/01 4 4 5SELECT結果 ↓ 6 7test1 02 2017/06/01 4

上記のような構成のデータがあるとして、data_nameが同名のレコードが複数存在する場合create_dateの新しいものを、create_dateが同じ場合にはdata_noが大きいレコードに絞って抽出したいのですがどのように絞れば抜き出せるでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kunai

2017/06/02 04:59

data_no の型はintではなくcharやvarcharなのでしょうか
coko1

2017/06/02 05:58

varcharになります
guest

回答3

0

作成してみました(ちょっと力技です)

sql

1WITH CTE1 AS ( 2 select data_name, create_date, max(data_no) data_no from TABLE_AA group by 1,2 3 ), CTE2 AS ( 4 select data_name, max(create_date) create_date from CTE1 group by 1 5 ), CTE3 AS ( 6 select CTE1.data_name, CTE1.create_date, CTE1.data_no from CTE1 7 join CTE2 using (data_name,create_date) 8 ) 9SELECT TABLE_AA.* FROM TABLE_AA 10join CTE3 using(data_name,create_date,data_no);

投稿2017/06/02 06:16

A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Window関数のrank()を使って求めることができます。
詳しい説明はこちらこちらを参照していただくとして、rank() の order by でcreate_date,data_noを降順に並べるように指定すれば、大きい順に1から番号が振られます。(order byには複数の項目を指定可能です。)
振られた番号が1であるレコードを抽出すれば、条件に合うデータが取得できると思います。

投稿2017/06/02 13:03

sleepsheep

総合スコア310

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

rankなどのwindow関数を利用すれば実現出来ます。
よく利用する関数なので、覚えておくと良いですよ

投稿2017/06/02 04:45

koizumi

総合スコア230

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問