今日の振り返り

SQLの勉強で苦戦して悔しいし悲しいToT
今日こそはブログにまとめられると思っていたのに
本質的な部分を理解できていないことに気づいて頓挫してしまった。

明日はこの壁を乗り越えたいな。
頑張ろう☆

あと、夜中にお菓子を食べ過ぎてしまった。

  1. ピーナツせんべい
  2. グミキャンディー
  3. ポッキー
  4. チューイングキャンデー

うわ〜 超食べ過ぎじゃんww
家でなにかやっていてうまく捗らないとイライラしてお菓子を食べてしまうんだな〜
これは良くないねー

仕事のこと

今日は案件の仕事はチケットの棚卸とスケジュール設定に費やした。
あとは軽微なバグをちょっと潰した。
簡単なソースレビューもやった。

僕自身の担当している仕事は進まなかった。
その代わり、案件の仕事じゃないタスクを一日の時間の半分くらい費やしてやった。
Google Apps Scriptは慣れなくてなかなかコーディングが捗らない。
もうひとつは執筆をちょっと進めた。
うん、頑張ろう… 頑張ろう… 沢山タスクを抱えてしまって辛いなぁ…

SQLの相関サブクエリがまだ解っていない

僕は今日家に帰ってから、ずっとこのSQLの意味が理解できなくて苦しんでいた。
そして今もまだ解っていない。

SELECT
    prc_date,
    A1.prc_amt,
    (SELECT SUM(prc_amt)
        FROM accounts A2
        WHERE A1.prc_date >= A2.prc_date
            AND (SELECT COUNT(*)
                        FROM accounts A3
                        WHERE
                            A3.prc_date BETWEEN A2.prc_date AND A1.prc_date
                        ) <= 3
        HAVING COUNT(*) = 3
    ) AS mvg_sum
FROM accounts A1
ORDER BY prc_date
;

わからないことは二つあって、

  1. この、赤字にした部分を"<= 3"から"= 3"に変えるとどうしてNULLばかり返ってきてしまう(SUMするレコードがヒットしない)のか解らない。
  2. どうして日付がちゃんと連続したレコードの集まりしかSUMの対象にならないのか解らない。"A1.prc_date >= A2.prc_date"を満たす3件のレコードならば、日付が飛んでいても構わないはずなのに、何でちゃんと並んだ日付にしかならないのか解らない。

ちなみに、accountsというテーブルに

mysql> select * from accounts;
+------------+---------+
| prc_date   | prc_amt |
+------------+---------+
| 2011-10-26 |   12000 |
| 2011-10-28 |    2500 |
| 2011-10-31 |  -15000 |
| 2011-11-03 |   34000 |
| 2011-11-04 |   -5000 |
| 2011-11-06 |    7200 |
| 2011-11-11 |   11000 |
+------------+---------+
7 rows in set (0.00 sec)

こういうデータが入っていると、

+------------+---------+---------+
| prc_date   | prc_amt | mvg_sum |
+------------+---------+---------+
| 2011-10-26 |   12000 |    NULL |
| 2011-10-28 |    2500 |    NULL |
| 2011-10-31 |  -15000 |    -500 |
| 2011-11-03 |   34000 |   21500 |
| 2011-11-04 |   -5000 |   14000 |
| 2011-11-06 |    7200 |   36200 |
| 2011-11-11 |   11000 |   13200 |
+------------+---------+---------+
7 rows in set (0.03 sec)

こういう結果を返す。

移動累計が何に役立つのかわかった

移動累計は一定期間の合計値同士を比較するので、「変化を把握する」のに役立つらしい。

START's HOMEPAGE -- 超便利フォーム 第3弾「先見グラフ」
http://homepage3.nifty.com/mstart/form/form3.html

ここが参考になった。

毎月の売上高を見るだけでは、
その時々に業績が上昇しているのか、下降しているのか分からないが、
この表のように過去12カ月の移動累計を見れば、
毎月、その時点で、売上高の変化がひと目で読み取れる。
(この例の場合は上昇傾向のみにしてある)

常に、過去1年間の累計を追っているので、
前年同月比の差だけ数字が変化し、
月ごとの特別な事情や季節変動はすべて吸収されてしまうからである。