わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

SQLのカンマと四捨五入

ぐんぐん実力がつく! 逆算式SQL教科書

ぐんぐん実力がつく! 逆算式SQL教科書

Cの入門書もいろいろ読んできたので,興味をSQLに移すことにします.というのは嘘で,まあ自分が問い合わせ文を書いたり,学生が困っているときに助けたりするときの参考にしようと,手に取った本です.
節見出しが「したいこと」になっていて,構文・逆算図解・SQL・実行結果・解説の順に並んでいます.なのでリファレンスとして使用できそうです.
ただ,初学者が読むときには要注意の箇所が二つあったので,挙げておきます.

SELECT
  shain_name as 社員名
 ,address AS 住所
FROM shain;
-- p.28

複数の項目(ここでは属性)を並べるときに,改行してからカンマを書くという記法です.カンマを行末に書いていると,属性を並べ替えたり削除・挿入したりしていく際に,カンマを忘れるとか,不要なところにカンマがあるとかいったエラーが起こりやすいので,それを回避するための書き方です.
こういうスタイルをとっていることを本文中で補足しておくべきでしょうし,そして,このスタイルでいくなら,08章のCREATE TABLEにおいても,同じようにすべきでしょう.
次.

SELECT
  AVG(hanbai_tanka) AS 平均単価,
  TRUNCATE(AVG(hanbai_tanka),0) as 切捨て,
  TRUNCATE(AVG(hanbai_tanka)+0.99,0) as 切上げ,
  TRUNCATE(AVG(hanbai_tanka)+0.55,0) as 四捨五入
FROM  shohin;
-- p.116

びっくりしたのは「0.55」のところです.「1.45」ってのも,この四捨五入で「2」になってしまうぞ,2段階の四捨五入をしようってえのか,と驚いたのですが,p.117の例では「SELECT TRUNCATE(2.4+0.5,0),TRUNCATE(2.5+0.5,0)」とあるので,「0.55」は「0.5」の単純ミスとみてよさそうです.p.118にはROUND関数についても言及しています.ASの大小不統一,列挙カンマの位置,p.118の脱字からみて,5.1.1節は校正不足なのでしょう.
関連: