令和3年春期午後問6
広告
Qqqpさん
(No.1)
https://www.ap-siken.com/kakomon/03_haru/pm06.html
設問4の解説読んでも勉強不足のせいかあまり理解できていない気がします。年月と車種IDのみの主キーではダメなのでしょうか?
設問4の解説読んでも勉強不足のせいかあまり理解できていない気がします。年月と車種IDのみの主キーではダメなのでしょうか?
2021.08.19 18:54
GinSanaさん
★AP プラチナマイスター
(No.2)
この投稿は投稿者により削除されました。(2021.08.19 20:00)
2021.08.19 20:00
GinSanaさん
★AP プラチナマイスター
(No.3)
分析対象期間を過去複数年間,時間軸を月別として人気車種及び遅延返却発生件数を分析する場合,
種々の分析に時間が掛かり過ぎるので改善してほしいという要望が経営企画部から挙がった。
から種々の分析に時間が掛かり過ぎるので改善してほしいという要望が経営企画部から挙がった。
集計表
集計表が年月と車種IDだけが主キーじゃダメなんか、という話ですが、目的通り例えば遅延返却発生件数を求めるなら、まずは貸出テーブルから見に行きますけど、
遅延返却発生件数のカウントってのは貸出テーブル的には年月日、駐車場ID、車種ID、会員IDが主キーだからそれらごとに集計されているわけですよね。
2021/08/19 A001 ZZZZ KAI_01 10
2021/08/19 A001 YYYY KAI_02 20
2021/08/31 A001 ZZZZ KAI_03 30
2021/09/30 A002 VVVV KAI_03 400
とかこんな感じで。
で、
時間軸を月別として
とあるから、SELECT
TO_CHAR(年月日, 'YYYYMM') AS 年月,
駐車場ID,
車種ID,
会員ID,
SUM(遅延返却発生件数) AS 遅延返却発生件数
FROM
貸出
GROUP BY
TO_CHAR(年月日, 'YYYYMM'),
駐車場ID,
車種ID,
会員ID
こんな感じで集計し直すわけですよ。TO_CHAR(年月日, 'YYYYMM') AS 年月,
駐車場ID,
車種ID,
会員ID,
SUM(遅延返却発生件数) AS 遅延返却発生件数
FROM
貸出
GROUP BY
TO_CHAR(年月日, 'YYYYMM'),
駐車場ID,
車種ID,
会員ID
このクエリを発行した上で、集計テーブルで年月と車種IDだけ主キーをはるとどうなるか。
年月と車種IDだけで決まるので、年月と車種IDが同じで駐車場ID、車種ID、会員IDのいずれかが違うレコードが一意制約違反で入らなくなります。
集計自体を年月と車種IDだけでするならわかりますが、そうではないので。
※これは実表だから主キーが絡みますけど、これをマテリアライズドビュー(実表領域に作るビュー)で作るなら主キー設定は基本ムリ(できるRDBMSはあるにはあるが、少ない)なのでGROUP BYとかでクエリ的に一意になるようにします
2021.08.19 20:02
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。