図のデータモデルは会計取引の仕訳を表現している。“移動”がリンクする“勘定”の残高を増やす場合は金額の符号を正に,減らす場合は負にすることで,貸借平均の原理を表現する。このモデルに基づき,“勘定”表,“会計取引”表,“移動”表を定義した。勘定科目"現金"の2017年4月30日における残高を導出するためのSQL文はどれか。ここで,モデルの表記にはUMLを用い,表中の実線の下線は主キーを表す。また,“会計取引”表には今期分のデータだけが保持される。
勘定(勘定科目,期首残高)
会計取引(取引番号,取引日)
移動(勘定科目,取引番号,金額)
- SELECT SUM(金額) AS 残高 FROM 勘定, 移動, 会計取引
WHERE 勘定.勘定科目 = 移動.勘定科目 AND
会計取引.取引番号 = 移動.取引番号 AND
勘定.勘定科目 = '現金' AND
取引日 <= '2017-04-30' - SELECT 期首残高 + SUM(金額) AS 残高 FROM 勘定, 移動, 会計取引
WHERE 勘定.勘定科目 = 移動.勘定科目 AND
会計取引.取引番号 = 移動.取引番号 AND
勘定.勘定科目 = '現金' AND
取引日 <= '2017-04-30'
GROUP BY 勘定.勘定科目, 期首残高 - SELECT 残高 FROM 勘定, 移動, 会計取引
WHERE 勘定.勘定科目 = '現金' AND
取引日 <= '2017-04-30' - SELECT 残高 FROM 勘定, 移動, 会計取引
WHERE 勘定.勘定科目 = 移動.勘定科目 AND
勘定.勘定科目 = '現金' AND
取引日 <= '2017-04-30'
解答
イ
解説
ー
- SELECT SUM(金額) AS 残高 FROM 勘定, 移動, 会計取引
WHERE 勘定.勘定科目 = 移動.勘定科目 AND
会計取引.取引番号 = 移動.取引番号 AND
勘定.勘定科目 = '現金' AND
取引日 <= '2017-04-30'
ー - SELECT 期首残高 + SUM(金額) AS 残高 FROM 勘定, 移動, 会計取引
WHERE 勘定.勘定科目 = 移動.勘定科目 AND
会計取引.取引番号 = 移動.取引番号 AND
勘定.勘定科目 = '現金' AND
取引日 <= '2017-04-30'
GROUP BY 勘定.勘定科目, 期首残高
ー - SELECT 残高 FROM 勘定, 移動, 会計取引
WHERE 勘定.勘定科目 = '現金' AND
取引日 <= '2017-04-30'
ー - SELECT 残高 FROM 勘定, 移動, 会計取引
WHERE 勘定.勘定科目 = 移動.勘定科目 AND
勘定.勘定科目 = '現金' AND
取引日 <= '2017-04-30'
ー
参考情報
分野・分類
分野 | テクノロジ系 |
大分類 | 技術要素 |
中分類 | データベース |
小分類 | データ操作 |
出題歴
- DB 平成29年度春期 問2
- DB 平成27年度春期 問2