WEB+DB PRESS Vol.64

サポートページ

この記事を読むのに必要な時間:およそ 2 分

このページではWEB+DB PRESS Vol.64に関する補足情報を公開しています。

サンプルファイルのダウンロード

■ご注意
  • 本コーナーは,本誌記事参考用資料としてのご提供を目的としております。
  • 本誌記載の内容およびサポートサイトで公開しているサンプルコードに基づく運用の結果について,記事の筆者,プログラムの作者/提供元,(株)技術評論社は一切の責任を負いかねます。ご自身の責任のもと,ご使用ください。
  • 各サンプルファイル/ソースコードには,個別に,ライセンスやREADMEファイルなどで注意事項/制限事項が添付されている場合がございます。その場合,該当のライセンス,注意事項/制限事項を優先して適用とさせていただきますので,ダウンロード後,内容をご確認ください。

特集2「JavaScript最前線」

特集3「作って学ぶ日本語入力」

連載

お詫びと訂正

特集3「作って学ぶ日本語入力」第3章「変換速度と変換精度の向上」

P.116 図3
画像
画像

連載「SQL緊急救命室」

P.134 リスト4
INSERT INTO Sales2 
SELECT company,
       year,
       sale,
       CASE SIGN(sale - (SELECT MAX(sale)  -- 直前のレコードと売り上げを比較
                           FROM Sales S2
                          WHERE S1.company = S2.company
                            AND S1.year > S2.year ))
       WHEN 0  THEN '='
       WHEN 1  THEN '+'
       WHEN -1 THEN '-'
       ELSE NULL END AS var
  FROM Sales S1;
INSERT INTO Sales2 
SELECT company,
       year,
       sale,
       CASE SIGN(sale - (SELECT MAX(sale) -- 直近の年の売上げを選択
                           FROM Sales S2
                          WHERE S1.company = S2.company
                            AND S2.year =
                              (SELECT MAX(year)  -- 直近の年を選択
                                 FROM Sales S3
                                WHERE S1.company = S3.company
                                  AND S1.year > S3.year )))
       WHEN 0  THEN '='
       WHEN 1  THEN '+'
       WHEN -1 THEN '-'
       ELSE NULL END AS var
  FROM Sales S1;

P.135 左段1行目
S1.year > S2.yearという不等式
S1.year > S3.yearという不等式

P.135 左段4行目
S1.yearと、S1.year > S2.yearの条件に
S1.yearと、S1.year > S3.yearの条件に

P.135 図5
S1.year > S2.yearの条件に該当するレコード集合
S1.year > S3.yearの条件に該当するレコード集合

P.135 図8
-------------------------------------------------------------------------------------------
| Id | Operation                    | Name        | Rows | Bytes | Cost (%CPU)|     Time |
-------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT             |             |   12 |   108 |       3 (0)| 00:00:01 |
|  1 |  SORT AGGREGATE              |             |    1 |     9 |            |          |
|  2 |   TABLE ACCESS BY INDEX ROWID| SALES       |    1 |     9 |       2 (0)| 00:00:01 |
|* 3 |    INDEX RANGE SCAN          | SYS_C004248 |    1 |       |       1 (0)| 00:00:01 |
|  4 |   TABLE ACCESS FULL          | SALES       |   12 |   108 |       3 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("S2"."COMPANY"=:B1 AND "S2"."YEAR"<:B2)
-----------------------------------------------------------------------------------------------
| Id  | Operation                       | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                |             |    12 |   348 |       3 (0)| 00:00:01 |
|   1 |  SORT AGGREGATE                 |             |     1 |    29 |            |          |
|   2 |   TABLE ACCESS BY INDEX ROWID   | SALES       |     1 |    29 |       2 (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN            | SYS_C004280 |     1 |       |       1 (0)| 00:00:01 |
|   4 |     SORT AGGREGATE              |             |     1 |    16 |            |          |
|   5 |      FIRST ROW                  |             |     1 |    16 |       2 (0)| 00:00:01 |
|*  6 |       INDEX RANGE SCAN (MIN/MAX)| SYS_C004280 |     1 |    16 |       2 (0)| 00:00:01 |
|   7 |  TABLE ACCESS FULL              | SALES       |    12 |   348 |       3 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("S2"."COMPANY"=:B1 AND "S2"."YEAR"= (SELECT MAX("YEAR") FROM "SALES"
              "S3" WHERE "S3"."YEAR"<:B2 AND "S3"."COMPANY"=:B3))
   6 - access("S3"."COMPANY"=:B1 AND "S3"."YEAR"<:B2)

P.137 リスト6
UPDATE Sales3
   SET var =(SELECT CASE SIGN(sale - (SELECT MAX(sale)  -- 直前のレコードと売り上げを比較
                                        FROM Sales3 S2
                                       WHERE S1.company = S2.company
                                         AND S1.year > S2.year ))
                    WHEN 0  THEN '='
                    WHEN 1  THEN '+'
                    WHEN -1 THEN '-'
                    ELSE NULL END AS var
               FROM Sales3 S1
              WHERE Sales3.company = S1.company
                AND Sales3.year    = S1.year);
UPDATE Sales3
   SET var =(SELECT CASE SIGN(sale - (SELECT MAX(sale) -- 直近の年の売上げを選択
                                        FROM Sales3 S2
                                       WHERE S1.company = S2.company
                                         AND S2.year =
                                          (SELECT MAX(year)  -- 直近の年を選択
                                             FROM Sales3 S3
                                            WHERE S1.company = S3.company
                                              AND S1.year > S3.year )))
                    WHEN 0  THEN '='
                    WHEN 1  THEN '+'
                    WHEN -1 THEN '-'
                    ELSE NULL END AS var
               FROM Sales3 S1
              WHERE Sales3.company = S1.company
                AND Sales3.year    = S1.year);