ホーム > データベーススペシャリスト試験 > 2015年

データベーススペシャリスト試験 2015年 午前202


図のデータモデルは会計取引の仕訳を表現している。“移動”がリンクする“勘定”の残高を増やす場合は金額の符号を正に、減らす場合は負にすることで、貸借平均の原理を表現する。このモデルに基づき、“勘定”表,“会計取引”表,“移動”表を定義した。勘定科目“現金”の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'

解説

モデルの要点を先に整理

主な列役割
勘定勘定科目目 (PK), 期首残高各勘定科目の期首(前期繰越)残高のみを保持
会計取引取引番号 (PK), 取引日仕訳伝票ヘッダ
移動勘定科目目 (FK), 取引番号 (FK), 金額借方は+、貸方は− で仕訳金額を保持
※1 つの取引に結び付く移動の金額総和は 0
求めたいのは 「現金」勘定の残高を 2015-04-30 時点で算出
期首残高 + 期首後の仕訳(移動)金額の合計

各 SQL の評価

選択肢主なロジック評価
SUM(金額) だけで残高計算期首残高を加算していない
期首残高 + SUM(金額) を算出し
GROUP BY 勘定科目目, 期首残高
期首残高 + 当期移動 の正しい式 ◎
SELECT 残高 FROM 勘定…勘定表には残高列が無い
同上(残高列を参照)同じく列不存在 ✕

選択肢 (正答)のイメージ

SELECT 期首残高 + SUM(金額) AS 残高
FROM   勘定  A
  JOIN 移動  B ON A.勘定科目目 = B.勘定科目目
  JOIN 会計取引 C ON B.取引番号 = C.取引番号
WHERE  A.勘定科目目 = '現金'
  AND  C.取引日 <= '2015-04-30'
GROUP BY A.勘定科目目, A.期首残高;
  • 期首残高(A.期首残高)を加算
  • 取引日は 期間上限(4/30)まで
  • GROUP BY で単一行にまとめる(勘定科目は一つだけだが SQL 規則上必要)

結論

期首残高を加えた残高を正しく求めているのは選択肢「イ」 である。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ