はてなキーワード: TBLとは
全体、傾向変わりすぎ。午後ⅡはDBより業務を読み取るテストのような気がした。
----
午前Ⅱ
…1-15=DB、16-25=他(分散/BigData:4、Sec:3、他:3)DBでも新規が多くて面白かった。SQLがたくさん出た。19のAWES鍵長はアが正解。直前でイ→アにしてしまった。悔しい。
----
午後1
■問1:アフターサービス業務(イオだけ空白で43min。あとで戻って回答。)…傾向変わりすぎ!記載省略の網掛け部分が増えて難易度高い。
設問1
・SLP→SLPWeb問合せ ・問合せ--Web問合せ、通話(排他的サブタイプ)
・Web問合せ→発信通話 ・通話--発信通話(包含的サブタイプ) ・CC要員→通話
(2)
ア:媒体区分、問合せ年月日時刻、問合せ者氏名、電話番号 …「お名前」はさすがに属性名を変更した。
イ:問合せ内容 …ここが何もなかったのでやむを得ずアから問合せ内容を移動。エの「通話音声」と対応していると考えた。
ウ:SLP-BP(外)
エ:通話成立区分、社員番号(外)、通話時間、受発区分、通話音声
オ:Web問合せ番号(外) …3(6)「入ったWeb問合せに対して~電話をかける」より。
設問2
(1) (a) あ:製品シリーズ い:点検修理項目 う:案件
・ユニット→要点検修理FAQ ・要機能管理部品→(b)故障 ・FAQ→(c) ・FAQ→(e)
(2)(ついでにabcdefの関係名も記載)…連関祭り。それぞれの主キー+αだけ。
キ:a=製品シリーズ:製品シリーズコード(主)、ユニットコード(主)
ク:b=故障:ユニットコード(主)、機能部品番号(主)、故障年月日 …ここの故障年月日は本文に無いが寂しくて追加した。
コ:d=案件適用FAQ:FAQコード(主)、案件番号(主)、可能性順位
サ:e=関連FAQ:FAQコード(主)、関連FAQコード(主)、関連度ランク
シ:f=FAQ点検修理項目関連:FAQコード(主)、MTコード(主)
設問1
(2) TBL名:見積依頼明細、見積回答明細 制約:商品(商品コード)への参照制約 …制約定義名もないので明確な制約だとするとこれだろう。
(3) (c)商品コード (d)適用開始日 (e)FOR (f)FOR (g)OLD2 (h)NEW2 …efミスった。トリガ構文が出るとは。e=AFTER,g=BEFOREが正解か。
(4) (i)2022-08-31 (j)2022-09-01 (k)NULL
(5) 商品の更新:3,5,6 商品履歴への挿入:1,2,4
設問2…ここは簡単な気がする。
(1) (ア)アーカイブログ (イ)5 (ウ)1800 (エ)864000 (オ)1728
(3)複製先でログをディスクに出力する前にフェイルオーバーした場合
----
午後2
■問2:フェリー乗船予約システム(120minギリギリ。これも傾向変わりすぎ。)
設問1
追加リレーション↓
・宿泊区画→船型別宿泊区画 ・運航スケジュール→運航スケジュール明細
・運航スケジュール明細→等級別在庫 ・航路明細→運航スケジュール明細
・航路明細→(ア)販売区間 ・航路明細→(ア)販売区間(2本目)
(2)イ:顧客登録無し予約客 ウ:顧客予約客 エ:顧客乗船客 オ:顧客登録無し乗船客
追加リレーション↓ …線少ない!書くところが無い!
・予約-乗船(1:1)
(3)カ:航路番号(主)、乗船港コード(主)、降船港コード(主)、販売区間名
設問2
(1) (a)TBL名:等級別在庫 列名:利用可能個室残数、利用可ベッド残数
列値:(以下3行。全て' 'で挟んだ。) …ミスった。C港じゃなく003とかのコードだった。
01、2022-3-14、C港、DX
01、2022-3-14、D港、DX
01、2022-3-15、E港、DX
変更列名:利用可能個室残数 …わからない。1名だし個室かなとしたがベッドでもよさそう。
変更内容:1だけ減算する。
(2) (a)積載可能車両残長の最小値 (b)挿入する行の車両全長 以上
(3)往路予定日の6日前以降であるが、復路予定日まではまだ7日以上ある場合
設問3 …なんとなくスルスル解けたが見直す時間が無かった。
(1)
(2)
(3)
(a)キャンセル待ち、仮予約、本予約、の状態を判別する …予約TBLに予約ステータス区分 を追加するとして。
(b)
(4)
TBL名:船内売上 追加列名:航路番号(外)、出発年月日(外)、乗船客番号(外)
(5)
まとめ精算番号(航路番号(主)、出発年月日(主)、まとめ精算番号(主)、乗船客番号(外)、精算合計金額)
----
手伝っているけど、俺がかわりに全部やるんじゃなくて、ちゃんと本人に理解させてほしいといわれた。
それで説明しながらやってるけど、プログラミング言語の、if や switch は理解してるというから、SQLの CASE を説明したら理解できないと言われた。
あとSQLの SELECT と INSERT はわかるらしい。
それで
INSERT INTO TBL (A,B, C) SELECT A, B, C FROM TBL WHERE ・・・
という書き方を教えたら、これも理解できないらしい。
俺がこの書き方を知ったのがだいぶ前だからあんまり覚えてないけど、たしか見た瞬間に「SELECTの結果を一発でINSERTできるのか。便利じゃん」と理解できたと思う。
DELIMITER // CREATE PROCEDURE proc(IN s1 VARCHAR(32), IN s2 VARCHAR(32), OUT o INT) BEGIN DECLARE a INT; SELECT COUNT(*) INTO a FROM TBL WHERE COL1=s1 AND COL2=s2; IF a = 0 THEN SET o = 0; ELSE SET o = 1; END IF; END // DELIMITER ;
CALL proc('SUZUKI','ICHIRO',@a) SELECT @a
INSERT INTO TBL SELECT TBL.COL FROM OPENROWSET(BULK 'filepath', SINGLE_NCLOB) AS TBL(COL)
他の方法もいろいろあるだろう。ただ、文字コードに関して言及すると、SQL SERVER の内部データは UCS-2(UTF-16のサブセット)なので、合わせておいたほうが無難。UTF-16以外で取り込もうとすると、日本語付近で "XML 文字が無効です" などとエラーになる場合が多い(もちろん原因は何かあるのだろうが、調べてもさっぱり私には見当がつかない。時間の浪費はいやずら)。
'filepath'は、SQL SERVERのインスタンスが動いているマシンにとってのファイルパスね。'E:\???\???.xml'や'\\filesvr01\shared\data\???.xml'とか。
SELECT COL.query('/ELEM/NODE') FROM TBL など、あとはいろいろクエリーしてみてくれ。
(感謝)
こんな感じでどうなんだろうか。
SQLServer2000のNorthwindのOrdersテーブルで試してみた。
select top 10 * FROM dbo.Orders WHERE orderid NOT IN ( select top 10 orderid FROM dbo.Orders ORDER BY orderid) ORDER BY orderid
select top 10 * FROM ( select top 20 * FROM dbo.Orders ORDER BY orderid) AS tbl ORDER BY orderid DESC