• ベストアンサー

GROUP BYを使って書けますでしょうか?

以下のような為替レートのテーブル(kawase)があるとします。 ※値は適当です。   date  | cur | rate 2008-08-30 | USD | 110.36 2008-09-05 | USD | 178.34 2008-09-25 | USD | 100.45 2008-10-05 | USD | 96.54 2008-08-13 | EUR | 180.10 2008-09-08 | EUR | 200.54 2008-09-09 | EUR | 200.42 2008-10-11 | EUR | 160.31 2008-08-20 | GBP | 170.00 2008-09-10 | GBP | 181.45 2008-09-18 | GBP | 192.33 2008-09-24 | GBP | 195.02 米ドル(USD)の最新情報を取得するには、 以下のSQLでよいと思います。 SELECT * FROM kawase WHERE cur = 'USD' ORDER BY date DESC LIMIT 1; では、以下のように、全ての通貨の「最新情報」を 取得するには、どうすればよいでしょうか?   date  | cur | rate 2008-10-05 | USD | 96.54 2008-10-11 | EUR | 160.31 2008-09-24 | GBP | 195.02 GROUP BYでできますでしょうか? ※UNIONを使えばできましたが、通貨の種類が多数あるので、 SQLの行数が増えてしまいました。

  • MySQL
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

not exists を使えば select * from kawase k where not exists ( select 1 from kawase k2 where k.cur=k2.cur and k.date<k2.date ) (cur,date)に索引があれば結構レスポンスはいいと思いますが。

sweepea
質問者

お礼

ご回答ありがとうございます。 やはり、サブクエリーですね。了解しました。 existsほとんど使ったことないのですが、 この機会に勉強してみます。 ありがとうございました。

その他の回答 (2)

回答No.2

サブクエリを使えばこんな感じでしょうか? SELECT * FROM kawase WHERE (date,cur) IN (SELECT MAX(date),cur FROM kawase GROUP BY cur); ん~、まだ簡単な方法がある気もしますが。

sweepea
質問者

お礼

ご回答ありがとうございました。 WHERE (A, B) IN (・・・) こんなことできるんですね!勉強になりました。 やはり、サブクエリが必要になりますかね? 実は、サブクエリ使ってるんですが、もっと簡単な方法ないですか? と聞かれて、GROUP BYでMAX(date)すればいいのでは? と答えたものの、できなかったので。。 スマートでパフォーマンスの高いSQLはどういったものになるでしょうか? パフォーマンスが高い理由が分ければ、サブクエリでもUNIONでも構いません。 なんか、すっごい単純なことをやろうとしているのに、 単純に出来なかったので、質問してみました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

MySQLのバージョンは?? 基本的には日付のMAXをとると最新日になるでしょう その時のrateはサブクエリで得ることになるでしょうか。

sweepea
質問者

補足

ご回答ありがとうございました。 バージョンは忘れました。。5.1以上だったと思います。 やはり、サブクエリが必要になりますかね? 実は、サブクエリ使ってるんですが、もっと簡単な方法ないですか? と聞かれて、GROUP BYでMAX(date)すればいいのでは? と答えたものの、できなかったので。。 スマートでパフォーマンスの高いSQLはどういったものになるでしょうか? パフォーマンスが高い理由が分ければ、サブクエリでもUNIONでも構いません。

関連するQ&A

  • ヘッジについて

    以下の通貨に絞ってトレードに挑戦しようと思います。 保有しているポジションが損失を出している場合、両建てはしたくないので、違う通貨でできるだけヘッジしたいと考えています。 どの組み合わせでもかまいませんので、比較的短期間において、なるべくヘッジの関係になるものを教えてください。 よろしくお願いします。 EUR/USD EUR/JPY EUR/CHF EUR/GBP GBP/USD  GBP/CHF GBP/JPY CHF/JPY USD/JPY USD/CHF 

  • どうもです

    どうもです FXでファンダメンタル要素(指標発表等)に最も影響されない通貨ペアを教えてください とくにアメリカの経済指標の発表で急激に変化しない通貨ペアを教えていただけないでしょうか? 以下の通貨ペアからおしえてくれないでしょうか USD/JPY EUR/USD GBP/JPY USD/CAD EUR/CHF GBP/USD GBP/USD EUR/JPY AUD/NZD 私は上記の通貨ペアならEUR/CHF,AUD/NZDが同じ地域の通貨でありUSDが入っていないのであまりアメリカのファンダメンタル要因をあまりうけないとおもうのですがどうでしょうか? よろしくおねがいします

  • 為替 値を取り出す

    EUR/AUD EUR/CAD EUR/CHF EUR/GBP EUR/JPY EUR/USD 上記の通貨ペアからEURの値を取り出すことはできますか?

  • クロス円以外の取引

    クロス円のUSD/JPYやGBP/JPYなどは、円をFX会社に入金しているので、その円でGBPやUSDを取引しているのはわかるのですが、 クロス円以外の取引、EUR/USDやGBP/USDなどの取引をする場合は、 FX会社に円を入金してある場合は、 例えばEUR/USDショートの1万通貨のポジションを取るとき、仕組みとしてはFX会社に入金してある円を、まず、EURに変換して、それからEUR/USDショートの取引をするということになるのか(この場合はEURに対するUSDの価値と同時にEURに対するJPYの価値もみていないといけない?)、 ただ単にFX会社に入金した円はゲームやパチンコのクレジットと同じような感じで、200万円入金してあったら200万クレジットあるというあつかいになって、そのクレジットで扱えるだけの通貨が扱えて、ただEURに対するUSDの価値だけをみて取引していればいいのか? どういう扱いになるのか知りたいです。

  • GBP/USDとEUR/USDの必要保証金

    タイトル通りなのですが、レバレッジ100倍、1万通貨あたりのGBP/USDとEUR/USDの必要保証金の計算方法について教えていただけませんでしょうか?

  • 【FX】GBP/USD等の円を介さない取引の仕組み

    FXで取引できるGBP/USD EUR/USDなどの取引についての詳しい仕組みについてご存じの方は教えてください。 例えばGBP/USDロングの取引を行うときは JPY(金利0.1%)→USD(金利0.25%)→GBP(金利0.5%)と通貨を買って JPY/USDの部分をヘッジ(ヘッジコスト0.25%-0.1%=0.15%)して、 通貨の値動きに関しては(GBP/USD)に左右される、 スワップポイントは、 0.5%(GBPの金利)‐0.25%(USDの金利)‐0.15%(JPY/USDのヘッジコスト)=0.1%(年率) 以上のようなイメージで良いのですか? 実際にどのような取引が行われているのか詳しくご存じの方が いらっしゃいましたら、ご教授ください。

  • 金利平価説は実際に機能しているのか?

    このカテゴリーで時おり出てくる金利平価説ですが、これは現実の経済で本当に機能しているのでしょうか?「金利の高い通貨はやがて減価する」ということですが、現実の為替レートにはあまり合わないように思います。たとえばここ何年かにわたる大局的なトレンドを見ると、USD/CHFは下降でEUR/USDは上昇ですから一応「金利差のため」と言えるかもしれませんが、 EUR/GBP は横ばいで GBP/USD や AUD/JPY は上昇ですから金利差では説明できません。つまり USD/CHF や EUR/USD の方も金利差でトレンドを説明するのは怪しい、ということになります。開発途上国が外資導入のために無理して高金利にする場合にはいかにも減価しそうですが、成熟した経済先進国がインフレ制御のために高金利にする場合は状況が異なるように思います。

  • FXの通貨ペアの表記について

    FXをやっていて、いくつか疑問が出てきました。どなたかご存じであれば、教えてください。 疑問1 USD/JPYやEUR/JPYなどのように、対円はすべて右側に円があるので、我々日本人は取引や両替をするときに分かりやすいのですが、アメリカではJPY/USD、ユーロ圏ではJPY/EURとなっているのでしょうか?それとも、日本の場合と同じ? 疑問2 円以外の通貨に注目すると、ユーロはEUR/USD, EUR/AUDなどのように、すべて左側にユーロがあるようです。でも、ポンドはEUR/GBPだけが右側、それ以外では左側にポンドがあるようです。そこで、何か表記の法則があるのかと考えました。使用される通貨の国の面積の広い順とか、リスク度が高い順とか、いろいろと・・・。でも、面積だと、GBP/USDがあてはまらないし、リスク度など、EUR/AUDがあてはまりません。 しょーもない質問ですみません。どうも、数か月前から、気になっているのです。

  • FX(売り立て金額の把握方法)

    為替(FX)の売り立てをしている金額を知りたいのですが以下は正しいでしょうか? USD/JPYのレートが1ドル120円 USD/JPYを1万通貨売り建ている場合、左側のUSDを売っているので1万通貨*120円/ドル=120万円相当を売りだてている。 JPY/USDを1万通貨売り建ている場合、左側のJPYを売りだてているので1万通貨*1円で1万円相当を売りだてている。 1ユーロ150円として EUR/ZARを1万通貨売りだてている場合、左側のEURを売りだてているので1万通貨*150円/EUR=150万円相当を売り建てている。 1ランド=16円として ZAR/EURを1万通貨売りだてている場合、左側のZARを売りだてているので1万通貨*16円/ZAR=16万円相当を売り建てている。 以上宜しくお願い致します。

  • 指標発表でも無いときに、急にレートが動くのは何故?

    主に、USD/JPY、EUR/JPY、GBP/JPYをトレードしています。 指標時に、レートが乱高下するのは理解できるのですが、特別に指標の発表等、動く原因が私に理解できないときに、急に動き出すことがあります。 一日に何度も有るように思います。きょうも、USD/JPYで60pips位、急に下がりだしてビックリしました。尚、USD/JPY、EUR/JPY、GBP/JPYは、全く同じ動きをします。 こういう、動きは何が原因と考えられるのですか? 大きくは発表されない指標なんですか?仕掛け人がいるのですか? 本日、7/16、16:16の画面キャプチャを添付します。