SELECT *,(anda/dasuu) AS daritu FROM baseball WHERE daritu<'0.3';
のようにして打率を出しています。
しかし、WHEREを入れるとエラーになります。
書き方が悪いと思うのですが、ご指摘いただけないでしょうか?
また、darituフィールドを作成する時、小数点第2位まで
SQL文だけで絞る方法があれば、教えて下さい。
daritu は数値型だから、where句で条件を書くときにシングルクォートが要らないと思います。
SELECT *,(anda/dasuu) AS daritu FROM baseball WHERE daritu < 0.3;
MySQLのバージョンが4.1以上でしたら、副問合わせが可能です。
一度、darituを含んだテーブルを作成し、そこから*で引っ張ってくることで実現できると思います。
また、小数点第2位まで絞る方法としては、
切り捨ての場合はtruncate(数値、小数点以下の位)という関数を用いて書くことができます。
以上を合わせると・・・
SELECT * from
(SELECT *, truncate(anda/dasuu, 2) AS daritu FROM baseball )
WHERE daritu<'0.3';
四捨五入はround(数値、小数点以下の位)というのがありますが、
これは動作が環境に依存するようですので、結果が予想通りにならないことがあるようです。
先ほどは、ガセのコメント失礼しました。
(0.3 でも '0.3'でも動作しますね。)
http://dev.mysql.com/doc/refman/4.1/ja/select.html
にあるように、WHERE 句ではエイリアス名は使えないようです。
なので今回の場合は面倒でも、
select *, round(anda/dasuu,2 ) as daritsu from baseball where round(anda/dasuu,2 ) < 0.3;
のように同じ表記を WHERE 句に書く必要があります。
あっ、ちなみに2桁の表記は上記にあるとおりです。
ありがとうございます。希望通りの結果を得ることが出来ました。
エイリアス名が指定出来ないから表示出来なかったんですね。。
大変勉強になりました。
すみません。
SELECT * from
(SELECT *,(anda/dasuu) AS daritu FROM baseball) a
WHERE daritu < 0.3;
ですね。
副問い合わせのテーブルに何か名前(ここではa)をつけないとエラーになりますね。
ありがとうございます。ただ、なぜかエラー(queryが実行出来ない)になります。