みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

助けて下さい SQL

グーグルのビッグクエリで
SQLを使ってます。

データ型の日付でmax関数を使って
ユーザーの直近日を出したいのですが
直近日が上手く出ずにいます。
複数日でる状態です。

原因が分かりません。
直近日を出す方法を教えて下さい。

投稿日時 - 2019-03-22 16:48:57

QNo.9599374

すぐに回答ほしいです

質問者が選んだベストアンサー

> ユーザーごとの直近日を出したいのです。

ユーザーごとに直近日を出したのであれば、
金額(amount)も出しているのが ユーザーIDごとにグループ化することの邪魔をしています。
amountを外しましょう。

select max(deta)as deta,id from tableA group by id;

投稿日時 - 2019-03-25 10:49:56

お礼

ありがとうございます。
上手く出来ました。

投稿日時 - 2019-03-26 09:51:33

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

ここを参考にするとできました。試してみてください

https://lightgauge.net/database/sqlserver/1672/

投稿日時 - 2019-03-25 16:28:42

ANo.5

version 解りませんが、postgresですよね?
私の環境で同じことをすると、エラーになります。MAX関数はgroup byの集約として利用してください。とのメッセージです。
複数でるのは、別の項目を指定しているため、それぞれで日付が集約されずすべての日付(出力されている)が最大日付と認識され出力されているのではないかと推測されます。ためしに、select MAX(date) from tabelname だけで指定してみてください。おそらく1件のみ出力されるかと思います。
仮に、最大の1件のレコードのみ出力される場合には、日付をソートして
プログラムにて最大のレコードを抽出しなければならないのかと思います。
参考に以下のurlでも同じようなことを実験してます。
http://pentan.info/sql/max_record.html

投稿日時 - 2019-03-24 22:15:28

補足

MAX関数はgroup by
書き損じてますが
MAX関数はgroup byを使った上で
複数レコードが出てます。

投稿日時 - 2019-03-25 05:13:15

お礼

質問が足りなかったですね。すみません。
ユーザーごとの直近日を出したいのです。

投稿日時 - 2019-03-25 05:15:45

ANo.4

実際利用しているsqlとその結果、およびその付近のデータ(日付ソートしたもの)を提示してください。質問の内容が曖昧で答えられないと思います。

投稿日時 - 2019-03-23 22:35:45

補足

tableAのカラム
deta:日付
id:ユーザーid
amount:金額

select
max(deta)as deta,
id,
amount
from tableA



結果
data| id|amount|
0303|1|1000
0304|1|200
0305|1|100
0302|2|1000
0303|2|500
と出ます

投稿日時 - 2019-03-24 10:20:49

ANo.3

複数件取得されてしまうのは何か原因があると思うのですが、
もう少し情報が欲しいです。
実際のSQLとか。

投稿日時 - 2019-03-23 16:29:37

ANo.2

さらにorder by 日付項目A limit 1 と付け加えるとどうでしょう?

投稿日時 - 2019-03-22 19:02:57

ANo.1

一番単純なSQLであれば

select max(日付項目A)
from テーブルA

これでテーブルAの日付項目Aの最大値が取得できます。

投稿日時 - 2019-03-22 17:16:43

補足

それが出来ないから困っていて
原因が分からないんです。

複数レコードが出てくるんです。

投稿日時 - 2019-03-22 17:38:45

あなたにオススメの質問