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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

2423閲覧

最新のデータを取得するには

chintao1224

総合スコア155

PostgreSQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2020/07/18 15:50

最新のデータを取るSQLを知りたいです。

登録日時 名前 金額 都道府県 番号
2020/07/01 10:01:01 testA 2,000 北海道 434
2020/07/01 15:01:01 testA 1,900 北海道 434
2020/07/01 18:01:01 testA 1,750 北海道 434 ←ここを取りたい
2020/07/01 20:01:01 testB 1,050 岩手 222 ←ここを取りたい
2020/07/01 19:01:01 testC 1,500 山形 333 ←ここを取りたい
2020/07/01 12:01:01 testC 1,600 山形 333

group byを使うにも金額列が同一でないため難しいように思います。

SQL

1select * from tableA where 登録日時=(select max(登録日時) from tableA)

これだと岩手だけ取れそうに思えるので難しいように思います。

そうすれば「ここを取りたい」だけ取れるのでしょうか。

よろしくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

「SQL 最新」とかで検索すれば幾らでも事例は見つかるのに、一向にこういった質問が無くならないのは何故なのでしょうね。
自身の環境に置き換える事が出来ない?
それとも回答しちゃうから駄目なのかな。

取り敢えず、一例。

SQL

1select * from tableA ta 2where not exists( 3 select 1 from tableA 4 where 名前=ta.名前 and 都道府県=ta.都道府県 and 番号=ta.番号 5 and 登録日時 > ta.登録日時 6 )

投稿2020/07/18 22:41

編集2020/07/18 22:42
sazi

総合スコア25173

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

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

sazi

2020/07/19 03:30 編集

別に、chintao1224さんを特定してのコメントではありません。 気分を害したらごめんなさいね。 質問自体は、ある程度押さえた内容なので問題は無いのです。 代り映えしない質問が多いなぁと思ってつい。
guest

0

KoichiSugiyamaさんの回答の別解ということで。(動作未確認)

sql

1with maxdata as( 2 select 3 max(登録日時) as maxdatetime, 4 名前 5 from 6 tableA 7 group by 8 名前 9) 10select 11 * 12from 13 tableA 14 join 15 maxdata 16 on tableA.名前 = maxdata.名前 17 and tableA.登録日時 = maxdata.maxdatetime

投稿2020/07/19 01:54

m.ts10806

総合スコア80850

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

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

0

カラム数が増えていくとちょっと煩雑になるかもしれませんが

SQL

1SELECT 2 B.最新登録日時, A.名前, A.金額, A.都道府県, A.番号 3FROM 4 tableA AS A, 5 ( 6 SELECT 7 名前, max(登録日時) AS 最新登録日時 8 FROM 9 tableA 10 GROUP BY 11 名前 12 ) AS B 13WHERE 14 A.名前=B.名前 AND A.登録日時=B.最新登録日時

でどうでしょうか。

投稿2020/07/18 18:01

編集2020/07/18 18:02
KoichiSugiyama

総合スコア3041

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問