SQL Olympiadはどうやっおやったのですか終了

SQLでどのようにオリンピックを行ったかの話を続けたす 。 これは前の蚘事の続きであり、すべおが単玔に適合したせんでした。







前シリヌズの抂芁2016幎12月ず2017幎3月にオリンピアヌドの2぀の通信ラりンドがそれぞれ行われ、勝利の申請者はOracleデヌタベヌスでSQLを䜿甚する理論ず実践の䞡方で厳しい遞択を通過したした。 さらに、第3ラりンドに぀いおは、2017幎6月䞊旬の゜チオリンピックのフルタむム決勝です。







免責事項 念のために、私は自分の圹割を繰り返したす。そうでない堎合は、蚘事の最初の郚分の埌、䞀郚の人にはそれほど明癜ではないこずが刀明したした。 私自身、このオリンピアヌドの䞻催者ではありたせん。むベントの告知ず広告、スポンサヌの怜玢、倧孊ずの連携、オフラむンでのむベントの開催-これらはすべお他の人によっお行われたした。 私たちの䌚瀟はスポンサヌであり、オリンピックでいく぀かのコンテストを準備しおいたした。個人的には、SQLコンペティションの技術そしお技術のみの郚分を準備しおいたした。 ぀たり、圌はステヌゞを実斜するためのルヌルを準備し、タスクを準備しおチェックしたした。 それほど倚くはないように思えたすが、䞀方で、他のすべおが実際に行われるのはたさにそれです。 だから私も恥ずかしがり屋ではありたせん。







これが䜕であるかを明確にするために、公匏りェブサむトで 2016/17オリンピックの決勝戊に関するレポヌトを以䞋に瀺したす 。







オリンピアヌドのサむトからフォトアルバムぞのリンク 。それ以倖の堎所で芋぀けるこずは、どういうわけか明らかではありたせん。







第3ラりンド、察面の決勝戊、゜チ2017幎6月



䞻催者は私たちず゜チの参加者を決勝に招埅したした。 悪い堎所ではありたせん。 圓初は5月末に蚈画されおいたしたが、孊校での卒業匏パヌティヌの倧芏暡な祝賀䌚は、むベントの開催に困難をもたらしたした。 私は6月1日に1週間移動しなければなりたせんでした。







しかし、たず最初に。 たず、準備に぀いお。







仕事の準備



最初のラりンドのレむアりトは次のずおりでした。最初のラりンドは理論的には厳しいテストフィルタヌであり、2番目は魔法の問題解決の緎習であり、3番目は電撃戊でした。 察面モヌドでは、参加者は問題を実際の非垞に限られた時間で解決する必芁があるため、これは倧打撃になりたす。 そしお、電撃は確かに最高のプログラマヌを決定する最良の方法ではありたせん。 そしお、「最高ではない」-これはただ穏やかに蚀われおいたす。 しかし、圌らはそれ以䞊のものを思い付くこずができたせんでした。







しばらくの間、䜕らかの決たったアむデアを考え出そうずしおいたした。これは決勝党䜓に捧げられ、解決された各問題は参加者を前進させ、新しいタスクを開き、これらのタスクの数は既に解決されたそれぞれで増加したすが、アむデアは決しお珟実のものに圢を敎えたした。 尟を぀かたえられたせんでした。







時間が䞍足し、そのようなスキヌムで停止したした。 すべおのタスクはデヌタベヌスで暗号化されたす。 各問題の解決策により、チェヌンに沿っお次のタスクなどを解読できたす。 そうすれば、すべおが簡単になりたす。他の誰もが勝ったよりも先に動く人。 2぀のタスクが同じくらい遠くたで進んだ堎合、最初に勝った方が勝ちたした。 タスクの埩号化は保存された関数になり、同時に呌び出しが蚘録されたした。 これにより、状況をリアルタむムで監芖するこずができたした。 たた、埩号化機胜は特別に蚈算が耇雑になったため、1回の起動で数秒間動䜜したした。 これは、培底的な怜玢によっお問題を解決する可胜性を排陀するためです。 たた、これらの非垞に怜玢オプションの準備されたデヌタで、もしあれば、十分であるこずを確認したした。







決勝戊のこのスキヌムには、倚くの吊定できない利点がありたす。 たず、結果をリアルタむムで監芖できたす。 第二に、すべおの参加者は絶察に平等な状況にあり、控蚎の理由はありたせん。 䞻な欠点は、これらの同じ利点から正確に続きたす-突然脳が「詰たっお」、゜リュヌションが停止した堎合、それ以䞊の方法はありたせん。 電撃戊では、これは確かにそれほど健康的ではありたせん。なぜなら、それは迷惑であり、すべおの参加者が䜕らかの圢でこれに盎面するからです。 私は、そのようなタスクに決しお「行き詰たる」こずのない人を想像するこずさえできたせん。







しかし、私は本圓にそのようなフォヌマットを詊しおみたかったです。 遞択肢は明確です。タスク、それぞれのポむント、結果の自動怜蚌-獲埗したポむントを最も倚く獲埗した人。 私はこのアプロヌチが奜きではありたせんが、それも明らかです-最終結果のタスクポむントの重みのバランスをずりたす。 芋逃すのは非垞に簡単で、結果は突然䞍公平になる可胜性がありたす。 そしお、これらの重みをデバッグする機䌚はありたせん。これが唯䞀のフィナヌレです。 もう䞀床オリンピックを開催する堎合、私はただ最高だず思いたす。 今では経隓がありたす。







そのため、アプロヌチを決定したら、タスクを準備する必芁がありたす。 繰り返しになりたすが、私はそれを蚀葉で衚珟するために、オリンピアヌド以倖のタスクを持ちたいず考えたした。 ぀たり、圌らの゜リュヌションは、数論、特別なアルゎリズム、たたはそのようなものに関する特別な知識を必芁ずすべきではありたせん。 私はそれぞれの問題を解決したかったので、条件を実珟し、特定の問題なく゜リュヌションず実装を衚珟する宣蚀的な方法を想像する必芁がありたした。 さお、第2ラりンドのタスクのように芋えるのは、単玔です。 2番目のラりンドでは、問題を解決するための目暙時間は1日で、3番目の時間は30分でした。 タスクの結果ずしお、発明するこずは非垞に困難でした。 このバランスのためだけに、決定するのはそれほど難しくありたせんが、それも重芁です。 タスクで正しい結果を埗るために必芁な機胜を忘れないでください。倩井から答えを曞いたずしおも、解決策は勝手に装食するこずができたす。 解決方法はどこでも制埡せず、タスクのみをコンパむルしたため、SQLで最も簡単に解決できたした。







退屈しないように、キャンペヌンタスクでOracleデヌタベヌスの興味深い語圙オブゞェクトを参加者に玹介したした。 知らない人のために、珟代のデヌタベヌスには、デヌタベヌスの内容に関するすべおのメタ情報を含む蟞曞がありたす。デヌタベヌスに含たれるテヌブル、フィヌルド、手順、機胜、その他の倚くの有甚な情報を今すぐどのようにデヌタベヌスで起こっおいたす。 同じ理由で、より楜しくするために、テキストはグレゎリヌ・オスタヌのスタむルで蚭蚈されたした。







これが䜕が起こったのかです。 各タスクの終了時のトピックの衚瀺は条件の䞀郚ではありたせんでした。これらは䜜業メモであり、ここでは関連しおいたす。







決勝チャレンゞ



タスク0スタブ

人生、宇宙、そしおすべおに関する最も重芁な質問ぞの答えは、次のタスクを解読するための鍵です。







回答42







解決策この問題の解決には時間がかかりすぎ玄750䞇幎、答えを知る必芁がありたす。







タスク1

管理者デヌタベヌスにテヌブルを簡単に䜜成したした。 圌はそれが奜きで、別のものを䜜成したした。 そしおさらに400回。 圌が埌で述べたように、テヌブルはすべお異なっおいたしたが、そのうちの2぀は完党に少し䌌おいお、1぀のフィヌルドの名前のみが異なっおいたした。 怜玢しお、Vasyaによっお䜜成された2぀のテヌブルがあり、1぀のフィヌルド名が正確に異なる。 次から次ぞのタスクをデコヌドするためのキヌは、蟞曞匏の順序で次々に曞き蟌たれたテヌブルの名前です。







ヒントDBA_TAB_COLUMNSシステムビュヌを䜿甚したす。テヌブルベむスンはVPOUPKINEスキヌマにありたす。







トピック蟞曞DBA_TAB_COLUMNS、サブク゚リ、集蚈







タスク2

Vasyaがテヌブルを䜜成した埌、ナヌザヌKlavaはテヌブルに蚘入し始めたした。 そしお、前のタスクの1぀の衚にいく぀かの非垞に重芁なデヌタを入力したした。 しかし、ある時点で、圌女は同僚ずの䌚話に気を取られ、プログラムりィンドりを機械的に閉じお、デヌタを入力した蚘録を倱いたした。 圌女が最埌に思い出したのは、このレコヌドのフィヌルドの1぀がフィヌルドの名前に䞀臎する行で埋められおいたこずです。 管理者Vasyaは、この蚘録をクラりディアに芋぀け、圌女の努力を続けるのを助けたした。







前のタスクぞの回答からテヌブル内で、フィヌルドの1぀誰も知らないの倀がフィヌルド名に䞀臎する行を芋぀ける必芁がありたす。 次々に曞き蟌たれるこのフィヌルドの名前ずこのレコヌドのROWIDは、次のタスクを埩号化するためのキヌです。 ヒントDBA_TAB_COLUMNSビュヌを䜿甚したす。







トピック蟞曞DBA_TAB_COLUMNS、他のク゚リでク゚リを生成する機胜







タスク3。

前の問題を解決したVasyaは、それに぀いお考えたした。 2時間埌、圌は粟神的なcoogg-fuを知っおおり、任意のテヌブルの任意のフィヌルドで任意の倀を探すのに費甚がかからないずいう考えに気付きたした。 そしおさらに。 たずえば、途䞭で数倀フィヌルドを远加できたす。 圌はずおも興奮し、汗をかきたした。 そしお、Vasyaは、すべおの数倀フィヌルドの合蚈が12345であるテヌブルを怜玢するこずにしたした。そしお、そのようなテヌブルが芋぀かりたした この行のROWIDは、次のゞョブを埩号化するためのキヌです。







トピック蟞曞DBA_TAB_COLUMNS、他のク゚リでク゚リを生成する機胜







タスク4。

ノァシリヌがテヌブルを駆け巡る䞭、圌の同僚のれニア・スミスはひそかにそろばんずシェヘラザヌドで基地を䜜るこずにしたした。 たず、Vasyaをきっかけに、圌はテヌブルを1,000回䜜成するこずを黙想したした。 次に、次に䜕をすべきかを考えたした。 トランスのノァシンの声から圌を匕き出した

-そしお、これらの2぀のテヌブルの名前は、文字の埪環シフトによっお盞互に取埗されたす

-䜕

-さお、このテヌブルの名前の先頭が末尟に移動するず、そのテヌブルの名前が正確にわかりたす。

-どこ

Vasyaは瀺した。 テヌブルはJSMITHスキヌマにありたす。 これらの2぀のテヌブルの名前は、蟞曞匏順序で次々ず曞き蟌たれ、次のタスクの鍵ずなりたす。 2文字の埪環シフトの䟋ABCDEF-> CDEFAB。 DBA_TABLESビュヌを䜿甚できたす。







トピック蟞曞および文字列関数の䜿甚、DBA_TABLES







タスク5。

最埌に、Vasyaは経営陣のニヌズに応え、報告曞を䜜成するこずに同意したした。報告曞はすでに2か月間求められおいたした。 レポヌトでは、次のようにSQL2017.ORG_STRUCTUREテヌブルから組織構造を導出する必芁がありたした。 すべおの埓業員の名前をアルファベット順に印刷したす。 埓業員の1人が郚䞋を持っおいる堎合、頭の䞋でむンデントし、すべおの郚䞋を再びアルファベット順にむンデントしたす。 郚䞋の1人が郚䞋を持っおいる堎合、再び郚䞋をアルファベット順にむンデントしお掚枬したす。 以䞋に䟋を瀺したす。







  ... ------------------------ -------- ----          
      
      





埓業員の埓属は、マネヌゞャヌIDを参照するMANAGER_IDフィヌルドによっお蚭定されたす。埓業員の名前はNAMEフィヌルドにありたす。







報告を行ったVasyaは、Vasya自身が明らかに無関心ではないシャヌロットペトロフナID = 716に出銬した堎合、HINTフィヌルドを芋るず、このフィヌルドが次のタスクの鍵を開くこずに気付きたした。







トピック階局ク゚リ、SIBLINGSによる䞊べ替え







タスク6。

か぀おノァシャずゞェンダは独立に぀いおの論争を始めたした。 そしお、Vasyaは独立した刀断を1぀も行いたしたが、チェックポむントで持ち垰りを求められ、刀断を取り戻し、郚屋の隅に眮く必芁がありたした。 そしお、議論は新たな勢いで続きたしたが、今は䟝存に぀いおです。 䟝存関係は、必芁な堎所ず必芁でない堎所を探しおいたした。最終的には、お気に入りのデヌタベヌスで、かなり倚くの堎所で芋぀かりたした。







デヌタベヌスオブゞェクトが別のオブゞェクトに䟝存しおいる堎合、DBA_DEPENDENCIESにレコヌドがあるこずがすぐに明らかになりたした。OWNER.NAMEはREFERENCED_OWNER.REFERENCED_NAMEに䟝存しおいたす。 誰かがチェヌン内の次のオブゞェクトに䟝存しおいる堎合、䟝存関係のチェヌンはさらに継続できたす。







独立したオブゞェクトは興味の察象ではなく、いずれにせよそれらに䟝存するものはありたせん。 しかし、最も病み぀きになる人を芋぀けるこずは興味深い出来事でした。 さらに興味深いのは、他のすべおの人が䟝存しおいる最も「圱響力のある」人を芋぀けるこずです。 他のオブゞェクトの最倧数が䟝存するオブゞェクトの名前ず、これらのオブゞェクトの数は、次々に曞き蟌たれ、次のタスクを解読する鍵ずなりたす。







聎衆の䞭で隣に座っおいるVasyaず圌の同僚の行動から結果を保護するには、このタスクのLOLスキヌムに限定しおください。 オブゞェクトはそれ自䜓にも䟝存するず考えられおいたす。 スキヌム内のすべおのオブゞェクトの名前は䞀意です。 パッケヌゞの本䜓ず仕様は、1぀のオブゞェクトず芋なす必芁がありたす。







トピックDBA_DEPENDENCIES、再垰ク゚リ。







タスク7.ボヌナス

Kolya Yokも䌚瀟のニヌズに応じお働いたこずがありたしたが、倚くの方がより良いず信じおいたした

圌は䜕もしなかった。 たずえば、圌は悪名高いレポヌトEJEKP.JMACCXBXUKを曞きたした。

絶えず壊れおおり、このレポヌトによるず、月の氎文気象センタヌは長い間

すでに圌自身の倩気予報を行っおいたす。 もう䞀床レポヌトが衚瀺されなくなりたした

必芁なデヌタ、および䞀般的な緊急事態が発衚されたした職堎の誰も発散したせん

レポヌトが機胜するたで。 必死に詊みたコリダずは異なり

レポヌトの䜜業を分析するために、Vasilyは他の方法を採甚するこずにしたした。 そしお代わりに

プロシヌゞャEJEKP.JMACCXBXUKを砎った人を探しお、Vasyaは自分自身を蚌明するこずにしたした

圌は個人的にデヌタベヌス内の䜕も倉曎しなかったこずを実蚌する無実、

圱響する可胜性がありたす。 これを行うために、圌は手順ず機胜のリストを芋぀けたしたさらに

サブルヌチンEJEKP.JMACCXBXUKは独立しおいたす。 そしお、すべおのノァシヌナの修正

コヌドはこのリストに分類されたす。







仮定

DBA_DEPENDENCIESの䟝存関係は、オブゞェクトレベルたで现分化されたす。 これで

パッケヌゞルヌチン間の䟝存関係に関心がありたす。 させる

パッケヌゞP1のサブルヌチンS1は、パッケヌゞP2のサブルヌチンS2を呌び出したす。 それから私達は蚀う

そのP1.S1はP2.S2に䟝存しおいたす。 胜力ではなく、コヌド内で呌び出しを行うこずに関心がありたす

この呌び出しを行いたす。 䟋えば

IF FALSE THEN P2.S2; END IF;





P2.S2ぞの挑戊ず考えたす。







EJEKP.JMACCXBXUKが䟝存しないすべおのKEKスキヌマパッケヌゞルヌチンを芋぀けたす。

これを行うには、衚を䜿甚しおパッケヌゞの゜ヌスコヌドを分析する必芁がありたす

DBA_SOURCE。 ゜ヌスコヌドからすべおの䟝存関係を芋぀けるこずができるず想定しおいたす。

このスキヌムのパッケヌゞおよび他のスキヌムのルヌチンは呌び出されたせん。 パッケヌゞなし

コメント。 パッケヌゞおよびサブルヌチン名は、呌び出されたずきに垞に配眮されたす

間にスペヌスを入れずに1行で入力したす。 キヌワヌドPROCEDUREおよびFUNCTIONおよび

それらの名前も同じ行にありたす。 パッケヌゞ名ずサブルヌチン名

他のすべおのオブゞェクトの名前ずは異なりたす。 パッケヌゞのみが宣蚀されたす

ルヌチンは前方宣蚀です。







答えは、芋぀かったプロシヌゞャず関数の名前の文字列です

蟞曞線集し、カンマで区切られた単䞀の行に接着したす。 ロヌカルを忘れないでください

ルヌチンはパッケヌゞ本䜓で宣蚀されおいたすが、仕様では宣蚀されおいたせん







トピックDBA_SOURCE、再垰ク゚リ。







問題8.最埌のボヌナス

Vasyaは䌚瀟のニヌズに応えお働いおいたしたが、Zhenyaは熱意を持っお䜕かをし、時折Vasyaに神秘的な目を向けたした。 最埌に、それを我慢できない、Vasyaは尋ねた

-さお、䜕がありたすか

Eugeneの説明

-そろばんをやっおいたす。 JSMITH.ABACUSネヌムプレヌトに数字がありたす。 1぀の番号を遞択しおから、2番目の番号を同じレコヌドからでも任意に遞択しお远加したす。 次に、3番目の数倀既に取埗枈みのレコヌドから取埗するこずもできたすず4番目の数倀を取埗し、これら2぀を互いに乗算したす。 たた、このような4぀の数字のセットが、最初のペアの合蚈が2番目のペアの積に等しくなる堎合がありたす。 そしお、そのようなセットがいく぀発芋されたか知っおいたすか

「ただわかりたせんが、すぐにわかりたす。」 これは基本です -ノァシャは、クラバKの過去の゚クスプロむトを思い出しお蚀った。







しかし、リク゚ストを曞いお30分間「お埅ちください」ずいう碑文を送った埌、VasyaはV $ SESSION_LONGOPSおよびその他の同様の堎所を芋お、営業日の終わりたで答えが返っおこないこずに気付きたした。 芁求は停止されたした。 圌の心の䞭に䜕かを掚定しお、Vasyaは異なった行動をしたした。 そしお数分埌、圌は答えを知った。 この答えを芋぀けおください。







JSMITH.ABACUSテヌブルの4぀の数字の組み合わせの数は、最初のペアの合蚈が2番目のペアの積に等しいため、次のタスクを解読する鍵ずなりたす。 すべおの可胜なセットは次のように定矩されたす。最初の堎所-テヌブルの各番号、2番目の堎所-テヌブルの各番号、3番目ず4番目-同じ。 たずえば、テヌブルに10個の数字があり、それらすべおがれロである堎合、問題の答えは10 * 10 * 10 * 10 = 10000になりたす。







トピック远加のテヌブルの䜜成、最適化ネストされたルヌプずハッシュ結合の違い。







タスク9.最新のボヌナス

VasyaはZhenyaの肩を叩いお蚀った

-そしお、そろばんを䜜りたした そしお、あなたは私がそれに䜕を期埅しおいたか知っおいたすか

-前のタスクでやったように、䜜品ず䞀臎する合蚈数は

-いいえ、-ノァシャはにやにや笑いたした-私は簡単に行動したした。 4぀の数倀のセットがいく぀あるかを蚈算したした。最初の2぀の合蚈は最埌の2぀の合蚈に等しくなりたす。

「だからそれはさらに簡単です..」ずZhenyaは叫んだ。

-そしお、あなたが詊しおみおください-ノァシャはにやにや笑いたした。

そしお、圌が氎をのぞき蟌んだずき、それはそれほど単玔ではありたせんでした。







テヌブルVPOUPKINE.ABACUSから取埗した4぀の数倀の組み合わせの数は、最初のペアの合蚈が2番目のペアの合蚈に等しいため、次のタスクの鍵ずなりたす。







トピックロゞック、最適化曞き換え芁求。







タスク10.スヌパヌマン甚

Vasyaが勀務しおいる郚門には、ただ誰も行っおいない倚くのオヌプンタスクがありたす。

玄蚭定したす。 Vasyaは本圓にできるだけ早く䌑暇に行きたいず思っおいたすが、このために圌は決めなければなりたせん

KPIが滑らないように、これらのタスクから少なくずもK。 Vasyaはおおよその時間を衚したす

圌は各タスクの解決策を取り、K個のタスクを開発し、残りのタスクを䞎えたい

他のプログラマ。 これらのKの問題を解決するのに必芁な時間を芋積もったVasyaは、今すぐチケットを賌入するために䌑暇の開始を調敎するこずにしたした。 Vasyaの䞊叞は非垞に慎重であり、Vasyaが最埌に遞択したタスクを完了する時間がないず考えたため、この郚分的に解決されたタスクを別の開発者に転送する必芁があり、時間がかかりたす。 Vasyaの䌑暇は、このタむムリザヌブを確保するために進められたした。 タスクが優先され、開発者は優先床の高い順に実行する必芁がありたす。 TASKSテヌブルには、タスクに関するデヌタが含たれおいたす。 各タスクの名前は、NAME、郚門番号DEPARTMENT_NUMBER、PRIORITY優先床数倀が倧きいほどタスクの優先床が高い、EXPECTED_TIMEの掚定期間、および未解決のタスクを別のADDITIONAL_TIME開発者に転送する掚定時間です。 Vasyaは、できるだけ早く䌑暇を取るために、これらのタスクから正確にKを遞択したした。 ぀たり これらのK個のタスクの掚定所芁時間ず、これらのK個のタスクの最埌の優先順䜍による掚定䌝送時間の合蚈は、可胜な限り最小でした。







組織には耇数の郚門があり、各郚門には独自の「Vasya」がありたす。 テヌブルで

DEPARTMENTSには郚門デヌタが衚瀺されたす郚門番号DEPARTMENT_NUMBERおよび

Vasyaがこの郚門から解決しなければならないタスクKの数。 に泚意しおください

各Vasyaがタスクを遞択できるずいう意味で、郚門は完党に独立しおいたす

あなたの郚門のみ。







各Vasyaの䌑暇の開始時期を決定する必芁がありたす。

圌らはタスクを最適に遞択したした。 ぀たり、郚門DEPARTMENT_NUMBERのVasyaはS日間䌑暇を取りたす。Sは、Vasyaが遞択したタスクの期間ず最埌のタスクを別の開発者に転送する時間の合蚈に等しくなりたす。 キヌずしお、芋぀かったS番号を、郚門番号DEPARTMENT_NUMBERの昇順でスペヌスなしのコンマで区切っお䜿甚したす。 テヌブルはVACATIONSスキヌマにありたす。







トピック䞊べ替え、ロゞック。







タスク11.スヌパヌスヌパヌマン甚

䜕幎も経ちたした。 この間、人類は技術的な特異点を乗り越え、ノァシャはただ同じ䌚瀟で働いおいたした。 しかし今では、圌の脳はすでに人工知胜を備えたスヌパヌコンピュヌタヌに接続されおいるため、Vasyaは数千の問題を数ミリ秒で解決できたした。 すべおの革新にもかかわらず、Vasyaには「䌑暇䞭に早退する」ずいう問題がただありたす。 過去に倚くの統蚈が蓄積されおおり、タスクの優先床が䜎いほど、タスクを別の開発者に転送するために必芁な远加時間が短くなるこずがわかりたした。 たた、同じ郚門内で同じ実行時間の2぀のタスクが存圚する可胜性は無芖できるこずがわかりたした。







前のタスクず同じように倉曎する必芁がありたす

デヌタがMEGAVACATIONSスキヌマ、DEPARTMENTSおよびTASKSテヌブルにあるこずを確認しおください。

Vasyaが䜕癟䞇ものタスクを解決できるようになったこずに留意しおください。

デヌタが条件を満たすタスクTASK_i != TASK_j



が1぀の郚門から

TASK_i.EXPECTED_TIME != TASK_j.EXPECTED_TIME



およびTASK_i.PRIORITY <= TASK_j.PRIORITY



からはTASK_i.ADDITIONAL_TIME <= TASK_j.ADDITIONAL_TIME



たす。







トピック䞊べ替え、ロゞック。







タスク12.リボンを仕䞊げる

おっず..これはもうタスクではありたせん。 これは実際、仕䞊げです。 おめでずうございたす







スツヌルに寄りかかっお、笑顔で、䞻催者に静かに手を振るず、圌らも喜ぶこずができたす。 しかし、他の参加者の泚意をそらすこずなく、クヌル







タスクに関するコメント



タスクに関するいく぀かのコメント。 実際、最終タスクのために6個が準備され、さらにメむンの6個が解決された堎合は2぀のボヌナスの難易床が甚意されたした。 タスクは難易床の高い順に配眮されたした。 この耇雑さをどのように枬定するかは理解できないので、どこかで芋萜ずしがありたす。 さらに、以前のすべおの問題をボヌナスの問題ず䞀緒に解決するモンスタヌが突然珟れた堎合は、さらに耇雑な2番目のボヌナスタスクのバリ゚ヌションを1぀远加したす。







぀たり、最初の6぀の問題には確実にトリックはありたせん。SQLで曞く人は誰でもそれらを解決するこずができ、時間だけで十分です。 はい、远加の知識ずスキルを䜿甚するず、これらの問題を迅速に解決できたす。 ボヌナスタスクでは、倒錯者はすでに去っおいたす。 1぀目は、創造的に分析されたかなりの量のデヌタであり、2぀目は、最適化です。 さらに、困難なのは、ここで最適化が必芁であるず掚枬する必芁があるずいう事実にありたす。「額」の解決策が機胜しないため、特別に遞択されたからです。 远加のボヌナスタスクでは、前のタスクず同じ方法では機胜しないため、アルゎリズムの最適化が必芁です。







次に、割り圓おられた時間内に誰も最埌たで行かないようにするために、2぀の真にオリンピアヌドのタスクを蚭定したした。 そしお、もしあれば、12番のスタブは本圓におめでずうございたす。 もちろん、私たちはこれを信じおいたせんでしたが、䞭心の数孊者や専門職のプログラマヌずしお、私たちはそのような堎合を考慮すべきでした。







合蚈で、参加者は最倧6぀の問題を解決し、7-8-9で立ち埀生するこずが予想されたした。 たたはそれ以前。 最悪の事態は、誰もが最初のタスクに突然突っ蟌んだ堎合です。 圌ら参加者にずっおは、「3時間の恥、それからい぀も通り」であり、勝者を決める基準によっお必死に駆け巡りたす。 おそらく、自分自身を保護し、最初の項目ずしおいく぀かのSELECT ROWID FROM DUAL



タスクを配眮する必芁があったため、1぀の問題が正確に解決されたした。 しかし、蚈算は正しいこずが刀明し、最初のタスクなどがすべお解決されたした。







タスクの埩号化は次のように行われたす。







 SELECT sql2017.decrypt('---', encrypted_text) FROM sql2017_tasks WHERE task_number = 2;
      
      





公匏の目的でタスクを準備するプロセスでは、テヌブルゞェネレヌタヌ、ラビリンスゞェネレヌタヌ、および正しい算術匏2回目たで、コヌドず盞互呌び出しに必芁なパラメヌタヌを備えたパケットゞェネレヌタヌ、人名の単玔なゞェネレヌタヌが䜜成されたした。







い぀ものように時間がありたせんでした。 たずえば、遞択した圢匏でクむヌンタスクを実行する方法がわかりたせんでした。







オンサむトトレヌニング、゜チ2017幎6月



今、「玔粋な理由」の迷宮から、私たちは死の地に戻りたす。







゜チは倏の暖かさず緑に出䌚いたした。 チェックむンは朚曜日に、金曜日にはすべおのカテゎリヌで決勝戊が行われたした。 その埌、週末に文化プログラムが開催され、月曜日には賞の授䞎ずプレれンテヌションが行われたす。







サヌバヌに準備されたベヌスを持ち蟌みたした。 参加者も䞀緒に堎所を持ち蟌みたしたただし、自分自身ではなく、同僚。 同じ条件を䜜成するために、すべおのナヌザヌが同じ事前構成枈みゞョブを持぀こずになりたした。 個人的には、参加者が自分のコンピュヌタヌを䜿甚するこずを蚱可されおいる堎合、゚キゟチックな動物園の接続に関する問題の可胜性を恐れおいたした。 krivorukyず氞続的な誰かがいたす-トラブルは屋根の䞊にありたす。 そこで圌らは同じラップトップを持っおきたした。 メヌカヌからのGUIを備えた無料の開発ツヌルずしお、ファン実際にはSQLclおよびSQL Developer向けの本栌的なSQL * PLUSを提䟛しおいたす。 実生掻の友人の1人がSQL Developerを積極的に䜿甚したこずは芚えおいたせんが、その埌は党員が同じ状態にありたした。 さお、ドラマ化する必芁はありたせん。少なくずもメモ垳では、必芁なSQLク゚リを䜕でも収集でき、SQL Developerは問題なく動䜜したす。







朚曜日に私たちはこのすべおの経枈をオリンピックが開催されたオルゞョニキヌれ通りのオリンピック倧孊に持ち蟌みたした。 組織的な埅ち䌏せがありたした。 SQLファむナル甚に2぀の小さな郚屋が割り圓おられたした。 1぀では量に適合したせん。 ロヌカルネットワヌクは、ツむストペアテヌブルをラップしたした。 他に察応する機䌚がなかったので、私たちは本質的に近隣の聎衆で2぀の同時決勝を開催しなければなりたせんでした。 行うこずができた唯䞀のこずず私が倉曎したこずは座垭でした。 参加者が互いのモニタヌを芋る機䌚があった堎合、それはたったく圹に立ちたせん。 意図的に芗き蟌むこずはたずありたせんが、さたよう芖線に぀たずき、曞かれたものを芋ないこずは、問題を解決する際に行き止たりになった人にずっおはやり過ぎです。 そのため、私はネットワヌク䜜成者がすでに行った努力に䞍満を述べ、断固ずしおテヌブルを円状に配眮したした。 䞀郚の堎所の写真では、特城的に配眮された円テヌブルがちら぀きたす。







ワむダ、゜ケット、ラップトップのダりンロヌドずチェック、デヌタベヌスぞの接続の蚭定は耇雑ではありたせんが、さたざたな小さな質問が垞に発生するため、長い間です。 ツむストペアが終了した埌、ハブのすべおの穎がビゞヌであり、別の穎が必芁になりたす。 ネットワヌクは隔離されおいるこずが刀明したため、IPアドレスを配垃するにはDHCPが必芁です。 ネットワヌク構成の倉曎のためにアドレスを垞に実行しお手動で入力するよりも、1぀のDHCPサヌバヌを構成する方が簡単です。 ドキュメントにアクセスするには、むンタヌネットぞのゲヌトりェむが必芁です-構成され、動䜜したした。 ぀たり、倜遅くたで軜埮なトラブルで十分でした。







そしお、朝に私たちは埅っおいたした...







ファむナル



公匏のオヌプニングに぀いおは䜕も蚀いたせんが、これはSQLのノミネヌトず関係がありたすが、私たちはたったく関䞎しおいたせん。 オリンピックにはたくさんの人が集たったずしか蚀えたせん。 ロビヌのレセプションでは混雑しおいたせんでした。 前日にチェックむンしおバッゞをもらったのはいいこずです。







グランドオヌプンの埌、私たちはホヌルに最終参加者を集め、開拓者のリヌダヌのように、ファむナルの準備ができおいる聎衆に圌らを導きたした。 ブリヌフィング、ログむンの配垃、デヌタベヌスぞの接続の怜蚌、決勝戊のルヌルの説明、問題番号0の䟋によるテスト問題のデコヌドの党員による怜蚌 最初のタスクの代わりに、スタブがありたす。 事前に䜜成されたク゚リを䜿甚した解読者のログにより、テストタスクを正しく解読できおいないナヌザヌを远跡したす。 ああ、うたくいく







みんな準備はいい 最初のタスクをスタブから実際のタスクに倉曎し、ログをリセットしたす。 行きたしょう..







泚文ず状況を監芖したす。 状況を監芖し、解読者のログテヌブルから遞択し、解決された問題の数ず解読時間で゜ヌトするず䟿利です。リヌダヌは目の前にいたす泚意しお、「ラむブ」コヌド。







 select l.oracle_user, name, task , (select min(sent_date) from sql2017_log l2 where l.oracle_user=l2.oracle_user and l.task = task_number)+3/24 solve_time , tries from (select oracle_user , max(task_number) task , count(1) tries from sql2017_log group by oracle_user) l , sql2017_users u where u.oracle_user = l.oracle_user order by task desc, solve_time asc
      
      





いく぀か質問がありたす。 フィナヌレ党䜓のほんの䞀郚。 12:15のオヌプニングずブリヌフィングの荘厳な郚分の埌、1530に終了したした。 終了時間は、本質的にはそれほど重芁ではありたせんでした。䞻なこずは、事前に指定するこずでした。 15から16たで昌食があったずいう事実から始めたした。 参加者を30分遅らせるのは普通です。昌食を手攟さないのは残酷です。







フィナヌレ䞭のいく぀かの事実。 最初のタスクは、開始しおから4分前に解決されたした。 ファむナルでリヌダヌを3回倉曎したした。3人のリヌダヌは䞀般的に非垞に動的に倉曎されたした。 , ( ). ( , ), , , . . .







. , , , , . , , , - — . . , , . , , — .







, , . , ( ) ( ).









, , . , , , . , .







, — .









. . , , , .







! . — ! , , - . , - , , , - . , , - . , . , , .








All Articles