HOME»データベーススペシャリスト掲示板»R2 午後I 問3 設問3 (1)
投稿する
B6の12,000でしょうか?答えありきになりますが、分析B2や分析B6を使って、導き出すものではなく、それぞれ独立した分析でした。先入観は禁物です。
私の場合、まず、分析B2用SQL構文を見ながら、●●別のパターン数をメモして、最大結果行数80を捻り出す手順を探りました。分析用SQL文の目的が、WHERE、GROUP BYの順に書かれている事に気付きました。
次に、グループ別の求め方ですが、にゃんちゃん殿の回答No2を参考にして下さい。樹形図を想像します。例えば、パソコンのフォルダ四半期その1を開いたら、サブフォルダ会員区分その1とその2があったので、会員区分その1を開いてみたら、サブフォルダ会員地域コードその1と・・・があった。同様に、今度は四半期その2を開いたら、・・・、と続くので、掛け算する事になります。
そして、WHEREが2020年3月と2019年3月のような場合、それぞれで計算します。
»[0430] 令和3年 午後2 問2 設問1(3) 投稿数:5
»[0429] R3 午後1 問3 設問2 (1) について 投稿数:3
R2 午後I 問3 設問3 (1) [0432]
あきたこまつさん(No.1)
レコード数の求め方が全く分かりません。
一番下から導くのは分かるのですが、
全然答えたあわないです。
導き方の詳細をどなたかご教示お願い致します。
一番下から導くのは分かるのですが、
全然答えたあわないです。
導き方の詳細をどなたかご教示お願い致します。
2022.10.03 21:42
にゃんちゃんさん(No.2)
★DB シルバーマイスター
イ・ロ・ハのどれから解いてもOKです。
思考プロセスとしては・・・
①完成形のイメージを持つ
GROUP BYによって集計して、Excelのピボットテーブルみたいになるなあ
②列値の種類を掛け算していけばよさそうだなあと気づく
です。
例えば、以下のような商品購入履歴のテーブルを考えます。
購入日,会員NO,商品番号,個数,金額,性別,血液型
2021/01/01,A1001234,C10032,3,6000,男,A
2021/03/11,A1003333,C10001,1,5000,女,B
2022/10/07,A1009999,C10990,7,3500,男,AB
...
このテーブルから「2021年と2022年の性別・血液型別の購入金額合計」
を求めるSQLを実行すると以下のようになります。
年,性別,血液型,SUM_金額
2021,男,A,30000
2021,男,B,50000
2021,男,O,60000
2021,男,AB,130000
2021,女,A,35000
2021,女,B,70000
2021,女,O,10000
2021,女,AB,6000
2022,男,A,31000
2022,男,B,99000
2022,男,O,15000
2022,男,AB,10000
2022,女,A,77000
2022,女,B,65000
2022,女,O,30000
2022,女,AB,21000
この16行は、年・性別・血液型の列値の種類数を総当たりで掛け算した結果なので
年の列値(2021,2022の2種)
性別の列値(男,女の2種)
血液型の列値(A,B,O,ABの4種)
を掛け算した2×2×4=16行ということになります。
ただし、上記の例で男性かつA型の会員の購買履歴がない場合は
2021,男,A,30000
2022,男,A,31000
は表示されないことになります。
よって、そういうことは考慮しなくていいよというために、問題用紙P.24の表6の見出しには
「最大結果行数」と書いています。
ということで、イ・ロ・ハについては
問題用紙P.20[業務の概要]、P.21表1 から列値を探してきて
掛け算する、ということです。
思考プロセスとしては・・・
①完成形のイメージを持つ
GROUP BYによって集計して、Excelのピボットテーブルみたいになるなあ
②列値の種類を掛け算していけばよさそうだなあと気づく
です。
例えば、以下のような商品購入履歴のテーブルを考えます。
購入日,会員NO,商品番号,個数,金額,性別,血液型
2021/01/01,A1001234,C10032,3,6000,男,A
2021/03/11,A1003333,C10001,1,5000,女,B
2022/10/07,A1009999,C10990,7,3500,男,AB
...
このテーブルから「2021年と2022年の性別・血液型別の購入金額合計」
を求めるSQLを実行すると以下のようになります。
年,性別,血液型,SUM_金額
2021,男,A,30000
2021,男,B,50000
2021,男,O,60000
2021,男,AB,130000
2021,女,A,35000
2021,女,B,70000
2021,女,O,10000
2021,女,AB,6000
2022,男,A,31000
2022,男,B,99000
2022,男,O,15000
2022,男,AB,10000
2022,女,A,77000
2022,女,B,65000
2022,女,O,30000
2022,女,AB,21000
この16行は、年・性別・血液型の列値の種類数を総当たりで掛け算した結果なので
年の列値(2021,2022の2種)
性別の列値(男,女の2種)
血液型の列値(A,B,O,ABの4種)
を掛け算した2×2×4=16行ということになります。
ただし、上記の例で男性かつA型の会員の購買履歴がない場合は
2021,男,A,30000
2022,男,A,31000
は表示されないことになります。
よって、そういうことは考慮しなくていいよというために、問題用紙P.24の表6の見出しには
「最大結果行数」と書いています。
ということで、イ・ロ・ハについては
問題用紙P.20[業務の概要]、P.21表1 から列値を探してきて
掛け算する、ということです。
2022.10.03 22:19
あきたこまつさん(No.3)
にゃんちゃんさん
GROUP BYですね、その一言で理解しました。
埋めているものから導こうとしてしまいました。
いつも、的確なアドバイスありがとうございます。
GROUP BYですね、その一言で理解しました。
埋めているものから導こうとしてしまいました。
いつも、的確なアドバイスありがとうございます。
2022.10.03 23:01
logres_Fanさん(No.4)
★DB ブロンズマイスター
>No2
そういうことは考慮しなくていいよというために、問題用紙P.24の表6の見出しには「最大結果行数」と書いています。
そういう事なんですね!>No1
> 一番下から導くのは分かるのですが、
B6の12,000でしょうか?答えありきになりますが、分析B2や分析B6を使って、導き出すものではなく、それぞれ独立した分析でした。先入観は禁物です。
私の場合、まず、分析B2用SQL構文を見ながら、●●別のパターン数をメモして、最大結果行数80を捻り出す手順を探りました。分析用SQL文の目的が、WHERE、GROUP BYの順に書かれている事に気付きました。
次に、グループ別の求め方ですが、にゃんちゃん殿の回答No2を参考にして下さい。樹形図を想像します。例えば、パソコンのフォルダ四半期その1を開いたら、サブフォルダ会員区分その1とその2があったので、会員区分その1を開いてみたら、サブフォルダ会員地域コードその1と・・・があった。同様に、今度は四半期その2を開いたら、・・・、と続くので、掛け算する事になります。
そして、WHEREが2020年3月と2019年3月のような場合、それぞれで計算します。
2022.10.03 23:33
その他のスレッド
»[0431] H30 午後I 問3 設問1 (5) 投稿数:8»[0430] 令和3年 午後2 問2 設問1(3) 投稿数:5
»[0429] R3 午後1 問3 設問2 (1) について 投稿数:3