平成29年 春期 データベーススペシャリスト 午前II 問2

図のデータモデルは会計取引の仕訳を表現している。
“移動”がリンクする“勘定”の残高を増やす場合は金額の符号を正に、減らす場合には負にすることで、貸借平均の原理を表現する。
このモデルに基づき、“勘定”表、“会計取引”表、“移動”表を定義した。
勘定科目“現金”の2015年4月30日における残高を導出するためのSQL文はどれか。
ここで、モデルの表記にはUMLを用い、表中の実線の下線は主キーを表す。
また、“会計取引”表には今期分のデータが保持される。

勘定(勘定科目, 期首残高)
会計取引(取引番号, 取引日)
移動(勘定科目, 取引番号, 金額)

 ア  SELECT SUM(金額) AS 残高 FROM 勘定, 移動, 会計取引
    WHERE 勘定.勘定科目 = 移動.勘定科目 AND
        会計取引.取引番号 = 移動.取引番号 AND
        勘定.勘定科目 = ‘現金’ AND
        取引日 <= ‘2015-04-30’
 イ  SELECT 期首残高 + SUM(金額) AS 残高 FROM 勘定, 移動, 会計取引
    WHERE 勘定.勘定科目 = 移動.勘定科目 AND
        会計取引.取引番号 = 移動.取引番号 AND
        勘定.勘定科目 = ‘現金’ AND
        取引日 <= ‘2015-04-30’
    GROUP BY 勘定.勘定科目, 期首残高
 ウ  SELECT 残高 FROM 勘定, 移動, 会計取引
    WHERE 勘定.勘定科目 = ‘現金’ AND
        取引日 <= ‘2015-04-30’
 エ  SELECT 残高 FROM 勘定, 移動, 会計取引
    WHERE 勘定.勘定科目 = 移動.勘定科目 AND
        勘定.勘定科目 = ‘現金’ AND
        取引日 <= ‘2015-04-30’


答え イ


解説
勘定科目“現金”の2015年4月30日における残高は以下の条件の“金額”の和になる。

また、“会計取引”表には今期分のデータしかないため、期首残高を考慮する必要があるので、これをSQL文にすると
 SELECT 期首残高 + SUM(金額) AS 残高 FROM 勘定, 移動, 会計取引
    WHERE 勘定.勘定科目 = 移動.勘定科目 AND
        会計取引.取引番号 = 移動.取引番号 AND
        勘定.勘定科目 = ‘現金’ AND
        取引日 <= ‘2015-04-30’
    GROUP BY 勘定.勘定科目, 期首残高

(イ)になる。


キーワード
・貸借平均の原理

キーワードの解説

戻る 一覧へ 次へ