- 締切済み
平成20年 春期 基本情報技術者 午前 問58 の解説
平成20年 春期 基本情報技術者 午前 問58 の問題の解説をお願い致したく思っております。 どうしても、なぜ『エ』が不正解なのか、分かりません。 宜しくお願い致します。 ---------- 問58 “社員”表から,職務がプログラマである社員が5人未満の部署の部署コードを探すSQL文として,適切なものはどれか。ここで,“社員”表は次の構造であり,各列にはナル値は含まれないものとする。 社員(社員番号,社員名,部署コード,職務) ア SELECT DISTINCT 部署コード FROM 社員 S1 WHERE 5 > (SELECT COUNT(S2.社員番号) FROM 社員 S2 WHERE S1.部署コード = S2.部署コード AND S2.職務 = 'プログラマ') イ SELECT DISTINCT 部署コード FROM 社員 S1 WHERE 5 < (SELECT COUNT(S2.社員番号) FROM 社員 S2 WHERE S1.部署コード = S2.部署コード AND S2.職務 <> 'プログラマ') ウ SELECT DISTINCT 部署コード FROM 社員 S1 WHERE EXISTS (SELECT * FROM 社員 S2 WHERE S1.部署コード = S2.部署コード AND S2.職務 = 'プログラマ') GROUP BY S1.部署コード HAVING COUNT(*) < 5 エ SELECT DISTINCT 部署コード FROM 社員 S1 WHERE S1.部署コード IN (SELECT S2.部署コード FROM 社員 S2 WHERE S1.部署コード = S2.部署コード AND S2.職務 = 'プログラマ' GROUP BY S2.部署コード HAVING COUNT(*) < 5)
- char_0121g
- お礼率100% (4/4)
- SQL Server
- 回答数1
- ありがとう数5
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
最近は基本情報でもこんなわかりにくいSQL文出すんですね。 (すいません。第二種時代の人間で) さて、エがなぜ不正解かというと、「その部署にプログラマである社員が1人もいない場合、抽出できないから」です。 アはCOUNTを使っていますから、サブクエリの結果がゼロ人でも「0」を返してくれますが、エはサブクエリの結果が該当なしとなってしまい、メインクエリのIN句の条件を満たさなくなってしまうのです。
関連するQ&A
- SQL問題、正解なし?
H18 春 ソフトウェア 技術者試験 問67 (1)SELECT DISTINCT S1.生年 (2)FROM 社員 AS S1、社員 AS S2 (3)WHERE S1.生年>=S2.生年 (4)GROUP BY S1.生年 (5)HAVING COUNT(*)<=3 社員 社員番号 社員名 生年 1943 1968 1970 1943 1953 1954 1962 1975 1961 1957 ※社員番号・社員名は端折りました。 (2):社員テーブルから 全く同じ内容をS1、S2でテーブル名を変更 (3):同じ内容を比較していく S1.生年以上をひとつずつ比較して (4)・(5)でグループ化して3つ以下であれば (1):DISTINCTで重複を削除して出力 1943 2つ 1953 3つ 出力結果 生年 1943 1953 で正解なのでしょうか? 選択問題で不備があり正解なしとあります。
- 締切済み
- 情報処理技術者
- COUNT(DISTINCT *)がエラーになる理由を教えてください
以下のSQL文がエラーとなるのはなぜですか? SELECT COUNT(DISTINCT *) FROM 社員 SELECT DISTINCT * FROM 社員 ならエラーにならないのにどうしてでしょうか
- 締切済み
- SQL Server
- sedに関する質問
★以下のファイルがあるとします。 SQL> select count(*) from koumoku where no = 1052 and mid =2; COUNT(*) ---------- 7 SQL> select count(*) from koumoku where no = 1053 and mid =3; COUNT(*) ---------- 4 SQL> select count(*) from setumei where no = 1054 and mid =2; COUNT(*) ---------- 9 SQL> select count(*) from setumei where no = 1055 and mid =7; COUNT(*) ---------- 5 SQL> select count(*) from imi where no = 1056 and mid =2; COUNT(*) ---------- 9 SQL> select count(*) from imi where no = 1057 and mid =6; COUNT(*) ---------- 3 ★ここでsedコマンドを利用して、 koumoku COUNT(*) ---------- 7 koumoku COUNT(*) ---------- 4 setumei COUNT(*) ---------- 9 setumei COUNT(*) ---------- 5 imi COUNT(*) ---------- 9 imi COUNT(*) ---------- 3 のように取り出したいのですが、方法が分からないので、 誰か教えてもらえますか?宜しくお願いします。
- 締切済み
- Linux系OS
- テーブルで使用するinについて
select count(r.テスト1) as all_count from DB1 as r where 1=1 and ( r.テスト1 in (select distinct テスト1 from DB2 where テスト1 is not null and テスト2 is not null)); このようなSQL文がある場合は どのような意味になるのでしょうか? inといものはどのようなときに使うのでしょうか? ご教授お願いいたします。
- ベストアンサー
- PostgreSQL
- 【初歩的な質問ですが・・・】 SQL文書き方がわかりません
SQLの知識に乏しい者です。 よろしくお願い致します。 ●テーブルA ・会計コード ・年度 ・部署番号 ・社員番号 ・その他幾つかのデータ ※Where句で「年度>2002年」以降を抽出 のテーブルがあります。 この時、Bテーブルで ●テーブルB ・会計コード(主キー) ・年度 ・部署番号(主キー) ・社員番号(主キー) ・その他幾つかのデータ ※Aテーブルで抽出されたデータの中から絞り込む というテーブルを抽出するSQL文を組みたいのですが、効率の良いやり方がわかりません。 副問合せで Select [B表で抽出した列名…] From B表 Where 会計コード = (Select 会計コード From A表 Where 年度 > '2002') AND 部署番号 = (Select 部署番号 From A表 Where 年度 > '2002') ・・・・以下省略 の様に書くと効率が悪い気がしました。 (実際には、副問合せが6個書くことになるため) 良い書き方を知っている方がいらっしゃいましたら、よろしくお願い致します。
- ベストアンサー
- Oracle
- 基本情報技術者 平成18春期 午前問9
次の表は、入力文字列を検査する為の状態遷移表である。この検査では、初期状態をaとし、文字列の入力中に状態がeになれば不合格とする。 回答群で示される文字列のうち、この検査で符号家屋となるものはどれか。ここで、回答群中の△は空白を表す。 入力文字 空白 数字 符号 小数点 その他 現在の状態a a b c d e b a b e d e c e b e d e d a e e e e 選択肢 ア+0010 イ-1 ウ12.2 エ9.△ 答えウ12.2 がよくわかりません。参考書説き方の欄で、ウは、abbdeとなるのは理解できるのですが、その他の選択肢も、アcbbeでeになって、エもbdeでeになると思うのですが。ちなみに参考書にはアはacbbbb、エはabdaとなっています。 よろしくお願いします。
- ベストアンサー
- 情報処理技術者
- 平成22年 春期 基本情報技術者 午前 問43
回答を読んでもわからないので教えてください。 なぜ4を設定すると,実行だけができるのでしょうか? 漠然とした質問の仕方ですいません…。 http://情報処理試験.jp/FE22a-am/t43.html
- ベストアンサー
- 情報処理技術者
- 平成23年 春期 基本情報技術者 午前 問19
解説にある、「データベースサーバでは、1トランザクション当たり、データベースの 10 データブロックにアクセスする SQL が実行される。データブロックのアクセスに必要なデータベースサーバの CPU 時間は, 0.2 ミリ秒で、CPU 使用率の上限は、80%であるから、処理できるトランザクションの数は 400 件になる。 」で、なぜ400件になるのかがわかりません。 問題文から、1トランザクションにつき、0.2ミリ秒かかる。 ということは、2秒につき、300トランザクション処理する。 ということは、1秒ではその半分で、150トランザクション処理する。 ということは、150トランザクション×0.8(CPU 使用率の上限)=120トランザクションでは?? http://情報処理試験.jp/FE23a-am/k19.html
- ベストアンサー
- 情報処理技術者
- 平成23年 春期 基本情報技術者 午前 問67
解説を読んでもわかりません。 1500 : 2000 = x : 60000という式から回答を求めるようですが、「2000」という数字はどこからきたのでしょうか? http://情報処理試験.jp/FE23a-am/k67.html
- ベストアンサー
- 情報処理技術者
- EXCELのVBAで重複を除いたカウント
EXCELのVBAでSQLの SELECT COUNT(DISTINCT(ITEMS)) FROM TABLE WHERE SHOP = 'A' と同様のことを行いたいのですが、どのように考えたらよいでしょうか。 同じようなことができる関数でもよいです。
- 締切済み
- オフィス系ソフト
お礼
いつもありがとうございます。 エの不正解の理由が分かりました。 とても助かりました。 丁寧で迅速なご回答を頂きありがとうございました。 これからも何卒宜しくお願い致します。