キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
<< わたしがNav Katzeについて知っていることを少し | main |
プログラマのためのSQL第四版読書会(28) 30.6 ベンダー拡張(p.570)
0
    # 2018-10-20に公開、2018-10-21に更新しました。

    このように書きましたが、やはりなかなかアウトプットできず(笑)
    とりあえずできる範囲でアウトプットしていきます。

    プログラマのためのSQL 読書会(28) - connpass

    ちょっと前からyuyabuさんが参加して、ブログエントリを書いてくれているので、まずはそちらを御参照ください。(そこへの訂正・補足もあるので)

    プログラマのためのSQL 読書会(28)に参加(Yabu.log)

    [Typo]

    今回はなし。というか以下の(1)が実は翻訳ではなく、Typo ?

    [翻訳の??な点]

    (1) p.571 「高く」「高く」になっているが、正しくは「高く」「低く」
    高く最も近い給与は5000ドル、この社員より高く最も近い給与は

    高く最も近い給与は5000ドル、この社員より低く最も近い給与は

    原文はこう(less than)なので、単純に翻訳間違い。

    Looking at the salaries, we see that the first salary greater than
    his is $5000.00 and the flrst salary less than his is $1300.00.

    (2) p.575

    31.1 最頻値
    「モード」の文字も欲しかったなぁ。(原文はThe Mode)
    同様に「中央値」に対する「メジアン(Median)」や、分散と標準偏差(Variance and Standard Deviation)、平均偏差(Average Deviation)
    なども、見出しではなく本文の初出のときに、元綴りがあるとさらに調べる時に便利だと思います。

    (3) p.588

    [訳注] でVARIANCEに言及しているが、Db2やMySQLは(標本)分散ではなく、母分散の動作なので注意が必要です。
    また、Oracleには元々あるVARIANCE以外にSQL標準のVAR_SAMPが追加されてますが、これは入力値が一つのときの戻り値に違いがあります。

    [原著の??な点]
    (4) p.573 「IBMはこの仕様の一部をDB2 UDB 6.2に実装した」
    うーん6.2はさすがにしらないなぁ。DB2技術全書「p.24 表1-1はDB2に関連する20年間の年表です。」にも以下の記述しかないし、

    1999年 DB2 UDB for OS/390 V6.1 DB2 for Unix,Windows and OS/2 V6.1

    以下のpdfにバージョンの名前があがるくらいで。

    DB2 SQL Workshop for Experienced Users

    http://ourworld.compuserve.com/homepages/Graeme_Birchall
    DB2 UDB 6.2 SQL Cookbook

    ただ↑このURLはすでになく、Grame Birchallのこのシリーズのドキュメントをまとめてくれている人のサイトでも7.2以降でした。

    本当に6.2 ? あるの?? IBMの方に聞いてみましたが、このIBM DB2 バージョン6の検索でも見つからないので
    公にはリリースされなかったのではないかと。。。。(7.xになったか??)

    (5) 母分散にも言及が欲しい
    31.4 分散と標準偏差(Variance and Standard Deviation)
    (標本)分散(sample variance)のみに言及している。標準偏差を求めるための分散なので、意図的にはこれでいいが、
    VARIANCE関数が(標本)分散を示す場合と、母分散を示す場合の実装があるので、母分散(population variabnce)にも言及欲しい

    分散(Wikipedia)


    ここにも言及がある不偏分散(unbiased variance)とのそれぞれの関わりが分からないなぁ。(SQLの前に)

    標準偏差とは?

    [用語]
    p.573 Cognos, InformixはすでにIBMが買収している。

    Brioは2003年にハイペリオンに買収され、ハイペリオンはオラクルに買収されたが、2015年4月にPremiere Support切れになっている。
    MicroStrattegyは継続してBIツールを提供している

    Enterprise Magagine : 英語版Wikipediaによると2007年ごろ停止したらしい。

    [人物]
    p.573
    ハミッド・ピラヘシュ(Hamid pirahesh) 引き続きIBMで働いているようです。IBM Fellow, ACM Fellow。こんなのもあった

    アンディ・ウィコウスキ(Andy Witkowski) 引き続きOracleで働いているようです。

    後述の「Introduction to OLAP functions」も参照のこと。

    p.580
    アナトニー・アブラモヴィッチ(Anatoly Abramovich)
    イェリーナ・アレクサンドロヴァ(Yelena Alexandrova)
    オイゲン・ビルガー(Eugene Birger)
    Yelena以外は、以下の書籍の著者。MS SQL Server関連の人のようだ。
    ptimizing Transact-SQL: Advanced Programming Techniques
    Yelenaは同姓同名のスケーターもいるので、うまく検索できないが、やはりMS SQL Server関連の人ではないか? まぁ検索してもセルコのこの本関連の検索結果しかでないが。。。

    p.581
    ケン・ヘンダーソン(Ken Henderson) MS SQL Serverの著作あり。以下の二冊は木村が所蔵。
    The Guru’s Guide to Transact-SQL
    The Guru’s Guide to SQL Server Architecture and Internals
    「故」と書いてあるとおり、2008年に40そこそこでなくなっている。R.I.P. 私と同じ1967年生まれなのに。

    マイケル・シーハン(Michael Sheehan) 同性同名の方が63才で亡くなっているが違う人のように見える。
    リチャード・レムレー(Richard Romley) : 27.3 レムレーの除算(Romley's Division)にも登場。
    ソロモンスミスバーニー(Salomon Smith Barney)勤務(だったらしい)。セルコがここのコメントでふれている。

    セルコの著作、SQLパズルのPUZZLE 10 WAGES OF SINのAnser #2や、Thinging in Sets: の 18.3 Data Constraint Approachなどでも、名前が確認できる。

    p.585
    ペソ(Peso) 普通に検索すると通貨のペソしかヒットしない。以下のセルコ関連のコメントにペソ自身がコメント付けている。
    アダム・マニチャク(Adam Machanic) Machanicはマカニックでは??
    こんな人らしいボストンを拠点としたSQL Server関連開発、執筆、講演者


    [ドキュメント・書籍]

    p.573 「Introduction to OLAP functions」

    (6) C.J.Dateの参照書籍。Textbooks(Date, 1983, 1995a) yuyabuさんの見立てでは以下の記述がありましたが、

    >Dateに関して1983年と1995年の著作は以下のものがあるらしい
    >
    > Relational Database Writings 1991-1994 [FACSIMILE], 1995, Addison Wesley Longman, ISBN 978-0201824599
    > Database : a primer, Addison Wesley, 1983, ISBN 978-0201113587
    >
    >おそらくこの2冊からの引用ということだろう。

    実はこの二冊は木村が持っているので内容確認したところ、厳密にそのような定義ではなく、以下の部分で使用・説明されている部分をさしているらしい。

    Database : a primer : 18 Database Design (Continued) p.231 the suppliers-and-parts example.
    Relational Database Writings 1991-1994 p.270 3. THE SUPPUERS-AND-PARTS DATABASEのp.271 Fig.1 The suppliers-and-parts database (data definition)

    ただ、primerのほうは具体的なCREATE TABLEがないし、Database Writingsのほうは
    DOMAINを使ってdata_typeを指定してなく、表名やカラム名が違うので、ググってもでてこないんですね。

    同等の定義、データは、デイトが「標準SQL(An introduction to the SQL Standard)」の初版(p.24)から使っている表だと思います。

    オリジナルはこちら。MySQL用に最適化してますが、定義とデータはオリジナルのままです。
    (「標準SQL」では、CREATE TABLEが掲載されていますし、DOMAINは使われていません)

    CREATE DATABASE TED;
    use TED;

    drop table if exists S;

    CREATE TABLE S
    (SNO CHAR(5) NOT NULL,
    SNAME CHAR(20),
    STATUS DECIMAL(3),
    CITY CHAR(15),
    UNIQUE(SNO));

    drop table if exists P;

    CREATE TABLE P
    (PNO CHAR(6) NOT NULL,
    PNAME CHAR(20),
    COLOR CHAR(6),
    WEIGHT DECIMAL(3),
    CITY CHAR(15),
    UNIQUE(PNO));

    drop table if exists SP;

    CREATE TABLE SP (SNO CHAR(5) NOT NULL,
    PNO CHAR(6) NOT NULL,
    QTY DECIMAL(5),
    UNIQUE(SNO,PNO));

    insert into S values
    ('S1','Smith',20, 'London'),
    ('S2','Jones',10,'Paris'),
    ('S3','Blake',30,'Paris'),
    ('S4','Clark',20,'London'),
    ('S5','Adams',30,'Athens');

    insert into P values
    ('P1','Nut','Red',12, 'London'),
    ('P2','Bolt','Green',17,'Paris'),
    ('P3','Screw','Blue',17,'Rome'),
    ('P4','Screw','Red',14,'London'),
    ('P5','Cam','Blue',12,'Paris'),
    ('P6','Cog','Red',19,'London');

    insert into SP values
    ('S1','P1',300),
    ('S1','P2',200),
    ('S1','P3',400),
    ('S1','P4',200),
    ('S1','P5',100),
    ('S1','P6',100),
    ('S2','P1',300),
    ('S2','P2',400),
    ('S3','P2',200),
    ('S4','P2',200),
    ('S4','P4',300),
    ('S4','P5',400);


    [所感]

    メジアン(Median)の下りが長いが、実はSQL:2008で定められたPERCENTILE_CONTにて実現できるため、
    「Firebird, MySQL, SQLite」以外では、「PERCENTILE_CONT( 0.5 ) WITHIN GROUP( ORDER BY expression )」で求められる。
    つまり、p.577-587のくだりは、歴史的な意味しかないです。。。。

    p.578 [訳注1] 中央値は、OracleがMEDIANという関数名でサポートしている。とありますが、現状他のRDBMSでは以下。
    なお、Oracleも後述するPERCENTILE_CONTで求めることもできます

    Db2 対応している。(DB2 11.1以降)説明には「PERCENTILE_CONT( 0.5 ) WITHIN GROUP( ORDER BY expression )と同値となっている」

    MS SQL Server 直接本体では対応していない。(2017時点)
    MDXでは対応している
    MS SQL Server 2019でも未サポートのようです。(新機能に見当たらない)

    ただし、IBMの別解と同様にPERCENTILE_CONTを使ってもとめることができる。(SQL Server 2012以降)

    PostgreSQLも直接は対応していないが、PERCENTILE_CONTで対応可能(PostgreSQL 9.4以降)。

    MySQLは8.0でも、median, percentile_cont共に未対応。
    Medianの機能リクエストはある。
    これを参照する形でPERCENTILE_CONTをリクエストしておくか。。。。

    MariaDBは10.3.3でmedian, percentile_contに対応。

    Firebird 3.0で未対応。Medianのリクエストがでている。これも。PERCENTILE_CONTのリクエストはでてないので、これもリクエストせねば。

    SQLiteはHistory of src/include/nodes/relation.hの変更で、SQL:2008にもとづき実装されたふう。。。

    2013-12-23 21:11
    Support ordered-set (WITHIN GROUP) aggregates. This patch introduces generic support for ordered-set and hypothetical-set aggregate functions, as well as implementations of the instances defined in SQL:2008 (percentile_cont(), percentile_disc(), rank(), dense_rank(), percent_rank(), cume_dist()). We also added mode() though it is not in the spec, as well as versions of percentile_cont() and percentile_disc() that can compute multiple percentile values in one pass over the data.
    https://www.sqlite.org/postgresql/finfo?name=src/include/nodes/relation.h&m=029349bc7e4721b3

    しかし、ドキュメントにはみあたらん(ここから参照できるcore, agg, windowみた)。relation.hを実際みてみるか。。。。

    ここでMariaDB 10.3時点の他のRDBMSの対応状況を知ることができる。

    なお、最後の例で:in_averageとなっているのはOracleのプレースホルダ。

    MySQLだと@in_averageとコロンをアットマークにかえて、ユーザ定義変数で代用できる。



    [次回]
    二週間後の2018-10-18(thr)にしようと思ったら、その日はRISC-V Day in Tokyo 2018なんだよなぁ。お休みにするか、前後の日にずらすかもしれません

    結局金曜日にずらしました。間違えて木曜日にきた人スミマセン。。。。

    JUGEMテーマ:コンピュータ

    | meijik | データベース | 23:36 | comments(0) | trackbacks(0) | - | - |









    http://blog.kimuradb.com/trackback/877542
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
    << November 2018 >>
    + RECOMMEND
    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊
    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊 (JUGEMレビュー »)

    100人のうちの一人としてミックさんの本を推薦しています。
    + RECOMMEND
    MySQL 5.1 Plugin Development
    MySQL 5.1 Plugin Development (JUGEMレビュー »)
    Andrew Hutchings,Sergei Golubchik
    MySQL 5.1 のプラグインを作るならこれ!
    + RECOMMEND
    AWKを256倍使うための本 (Ascii 256倍)
    AWKを256倍使うための本 (Ascii 256倍) (JUGEMレビュー »)
    志村 拓,鷲北 賢,西村 克信
    ここにきてまさかの復刊。15〜16年前の本ですが、いまでも十分役立ちますよ!!
    + RECOMMEND
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION) (JUGEMレビュー »)
    松信 嘉範
    Linux-DB システム構築の新スタンダード。DB Magazine人気連載、待望の書籍化です!!
    + RECOMMEND
    + RECOMMEND
    超・極める!MySQL
    超・極める!MySQL (JUGEMレビュー »)
    坂井 恵,志村 和彦,ひろせ まさあき,松信 嘉範
    内容は少々古くなりましたが、内部説明があり、いろいろ面白いです。
    + RECOMMEND
    The Root of .NET Framework
    The Root of .NET Framework (JUGEMレビュー »)
    荒井 省三
    .NETの根っこをつかむ、か?
    + RECOMMEND
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド (JUGEMレビュー »)
    奥野 幹也
    これまでにない構築、そして構築後のMySQLのための本。
    + RECOMMEND
    Database Management Systems
    Database Management Systems (JUGEMレビュー »)
    Raghu Ramakrishnan,Johannes Gehrke
    ミックさん連載の参考書籍です。
    + RECOMMEND
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series)
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series) (JUGEMレビュー »)
    W. Richard Stevens,Stephen A. Rago
    必読! といいつつ私が読んだのは初版の日本語訳です。差分はチェックしないといけませんね。
    + RECOMMEND
    + RECOMMEND
    + RECOMMEND
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE (JUGEMレビュー »)

    DELL SX260の換装用に購入。今はコチラのほうが安いですね。
    + RECOMMEND
    情熱プログラマー ソフトウェア開発者の幸せな生き方
    情熱プログラマー ソフトウェア開発者の幸せな生き方 (JUGEMレビュー »)
    Chad Fowler
    OSC2010神戸に出展されたジュンク堂で買いました。
    + RECOMMEND
    Software Design 総集編 【2000~2009】(DVD付)
    Software Design 総集編 【2000~2009】(DVD付) (JUGEMレビュー »)

    メガトン級の過去記事。売り切れる前にお店に急げ!
    + RECOMMEND
    + RECOMMEND
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2 (JUGEMレビュー »)

    Aspire 1410 HDD換装後、昔のHDDはこれにいれます。
    + RECOMMEND
    + RECOMMEND
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22 (JUGEMレビュー »)

    色違い黒(他に青と白があります): メモリは最大4GBとあるが、がんばれば8GBいけるらしい。
    + RECOMMEND
    Firebird 徹底入門
    Firebird 徹底入門 (JUGEMレビュー »)
    木村 明治,はやし つとむ,坂井 恵
    Firebird日本ユーザ会のはやしさん、そしてMyNAから拝借(?) してきた坂井さんとともに書きました。まだ誰も知らないFirebird 2.5や、いままでドキュメントのなかったツール類についてもソースを確認してとりあげた本です。是非ご活用ください。
    + SELECTED ENTRIES
    + RECENT COMMENTS
    • 使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
      noname (12/10)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 2015年版 InterBaseの歩み
      nakagami (12/06)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      meijik (11/22)
    • 分散DB本読書会第46回メモ「STOP AFTER 10」
      masudahidehiko (09/01)
    • Windows上でのMySQLビルド方法
      kinoyasu (03/31)
    • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
      MeijiK (09/19)
    • 伝わらない曲シリーズ: 川島恵「ミスター不思議」
      96 (07/05)
    • 気軽に新しいMySQLを試してみる: MySQL Sandboxのススメ
      MeijiK (02/17)
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + MOBILE
    qrcode
    + LINKS
    + PROFILE