終わった・・・

 デブサミから帰ってきました。緊張が解けていきなり眠くなってきた。でも歯を食いしばって『斉藤さん』を観た。やはり私の目に狂いはなかった。三上さんは素晴らしい人だ。

 閑話休題。予想よりも多くの方に聞いていただいて、木村さんカノエさん技術評論社の細谷さんはじめ、ご来場いただいた方々、どうもありがとうございました。慣れないこととはこのことか、という感じのたどたどしいしゃべりで、案の定やっちまった感の強い内容でしたけど、まあ交通事故にでも遭ったと思って許してください。それでも、SQLの原理と面白さ、私たちDBエンジニアとデータベースのこれからについての見取り図は、最低限示せたかな、と思います。

 終わって一息ついているところ、翔泳社の斉木さんと市古さんから「初心者にしては上出来」という慰めの言葉をいただいて機嫌をなおしたところで、7時からパーティにもぐりこんでご馳走をぱくつく。さすがに料理はどれも大変美味でした。このパーティだけなら毎年出たいなー。木村さんから「講演は一回やるたびに10日寿命がちぢむからね、がはは」と慰めか励ましかよく分からない言葉をかけてもらう。明日は木村さんが縮める番ですよ。

 それにしても、パーティは初日なのにまるで最終日のような凄い盛り上がりようでした。「開発者の祭典」という意味がよーくわかりました。運営委員の方は明日も大変でしょうが、頑張ってください(もちろんスピーカーの方々も)。

 そうそう、皆さん、セッションで出したメジアンに関する二つの宿題はとけました? サンプルデータは以下のとおり。これで講演資料のクエリは、集合指向のものも手続き型のものも、両方動きます。講演資料も後でダウンロードできるようになります。ダウンロードが開始されたらリンクを貼ります。クエリはこちらのレポートからも取得できます。斉木さんが手際よくまとめてくれています(壇上でのしどろもどろっぷりが全く想像できないほどに)。


CREATE TABLE Weights
(student_id CHAR(4) PRIMARY KEY,
weight INTEGER);

/* 奇数(メジアン=60) */
DELETE FROM Weights;
INSERT INTO Weights VALUES('A100', 50);
INSERT INTO Weights VALUES('A101', 55);
INSERT INTO Weights VALUES('A124', 55);
INSERT INTO Weights VALUES('B343', 60);
INSERT INTO Weights VALUES('B346', 72);
INSERT INTO Weights VALUES('C563', 72);
INSERT INTO Weights VALUES('C345', 72);

/* 偶数(メジアン=66) */
DELETE FROM Weights;
INSERT INTO Weights VALUES('A100', 50);
INSERT INTO Weights VALUES('A101', 55);
INSERT INTO Weights VALUES('A124', 55);
INSERT INTO Weights VALUES('B343', 60);
INSERT INTO Weights VALUES('B346', 72);
INSERT INTO Weights VALUES('C563', 72);
INSERT INTO Weights VALUES('C345', 72);
INSERT INTO Weights VALUES('C478', 90);

 宿題は次の二つ。

  1. 手続き的なコードの方を、実装非依存で動くよう、ROW_NUMBERを使わずに書き換えてください
  2. ソートキーに、体重(weight)列のほかに主キーの学生ID(student_id)を含んでいるのはなぜでしょう? 反対に言うと、学生IDをソートキーから除外すると、コードが正しく動かなくなるのはなぜでしょう?
 

 できたらこのブログでもメールでも、お気軽に答えをお送りください。
 これで書籍化に関する仕事は本当に「終わり」です。それでは、皆さんお元気で。