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


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

解説

会計取引の仕訳データモデルに基づく勘定残高の算出【午前2 解説】

要点まとめ

  • 結論:勘定科目「現金」の2017年4月30日時点の残高は、期首残高に当期の移動金額の合計を加算して求める。
  • 根拠:期首残高は勘定表に保持され、移動表の金額は会計取引表の取引日に基づき集計する必要があるため、両者を結合し集計するSQLが必要。
  • 差がつくポイント:期首残高を加算せずに移動金額の合計のみを取得したり、GROUP BYを忘れて集計できていない点で誤りが生じやすい。

正解の理由

選択肢イは、勘定表の「期首残高」と移動表の「金額」の合計を、会計取引表の「取引日」で条件を絞りつつ正しく結合して算出しています。
期首残高は当期開始時点の残高であり、移動金額は当期の増減を表すため、両者を合算することで正確な残高が得られます。
また、GROUP BY句で勘定科目と期首残高を指定し、集計関数SUMを用いて移動金額を合計しているため、SQLとしても正しい構文です。

よくある誤解

期首残高を加算せずに移動金額の合計だけを残高と誤認するケースが多いです。
また、GROUP BYを忘れてSUMを使うとエラーや誤った結果になることがあります。

解法ステップ

  1. 勘定表、移動表、会計取引表を勘定科目と取引番号で結合する。
  2. 勘定科目を「現金」に限定し、取引日は2017年4月30日以前のデータに絞る。
  3. 移動表の金額をSUM関数で合計し、期首残高に加算する。
  4. GROUP BY句で勘定科目と期首残高を指定し、集計結果を正しく取得する。

選択肢別の誤答解説

  • ア:期首残高を加算していないため、正確な残高が算出できない。
  • :正解。期首残高と移動金額の合計を正しく計算している。
  • ウ:結合条件が不十分で、移動表や会計取引表との関連付けができていない。
  • エ:構文エラー(勘定科目の文字列リテラルの閉じ忘れや不要な文字列)があり、実行できない。

補足コラム

会計システムのデータモデルでは、期首残高と当期の取引による増減を分けて管理し、残高を動的に計算することが多いです。
SQLでの集計は、正しい結合と条件指定、集計関数の使い方が重要であり、特にGROUP BYの扱いに注意が必要です。

FAQ

Q: なぜ期首残高を加算しなければならないのですか?
A: 期首残高は当期開始時点の残高であり、当期の取引による増減だけでは正確な残高を表せないためです。
Q: GROUP BY句はなぜ必要ですか?
A: SUM関数で集計する際に、他の列をSELECTする場合はGROUP BYでグルーピングしないとエラーになるためです。

関連キーワード: SQL集計, 会計データモデル, 期首残高, 移動金額, 貸借平均の原理
← 前の問題へ次の問題へ →

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