• ベストアンサー
  • すぐに回答を!

助けて下さい SQL

  • 質問No.9599374
  • 閲覧数201
  • ありがとう数2
  • 回答数7

お礼率 21% (840/3887)

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

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

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

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

  • 回答No.6
  • ベストアンサー

ベストアンサー率 66% (392/593)

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

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

select max(deta)as deta,id from tableA group by id;
お礼コメント
putiabu

お礼率 21% (840/3887)

ありがとうございます。
上手く出来ました。
投稿日時:2019/03/26 09:51

その他の回答 (全6件)

  • 回答No.7

ベストアンサー率 31% (62/196)

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

https://lightgauge.net/database/sqlserver/1672/
  • 回答No.5

ベストアンサー率 31% (62/196)

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

お礼率 21% (840/3887)

MAX関数はgroup by
書き損じてますが
MAX関数はgroup byを使った上で
複数レコードが出てます。
投稿日時:2019/03/25 05:13
お礼コメント
putiabu

お礼率 21% (840/3887)

質問が足りなかったですね。すみません。
ユーザーごとの直近日を出したいのです。
投稿日時:2019/03/25 05:15
  • 回答No.4

ベストアンサー率 31% (62/196)

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

お礼率 21% (840/3887)

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
  • 回答No.3

ベストアンサー率 40% (20/49)

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

ベストアンサー率 22% (1354/6037)

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

ベストアンサー率 40% (20/49)

一番単純なSQLであれば

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

これでテーブルAの日付項目Aの最大値が取得できます。
補足コメント
putiabu

お礼率 21% (840/3887)

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

複数レコードが出てくるんです。
投稿日時:2019/03/22 17:38
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ