تمرین شماره ۱: SQL

توضیحات کلی:

این بخش را با دقت بخوانید

  • ابتدا باید ماژول prettytable را نصب نمایید تا بتوانید اسکریپ‌ها را اجرا کنید.. (برای مثال pip install --user prettytable)
  • پایگاه داده‌ی flights.db را از http://ftp.yazd.ac.ir/FTP/New%20FTP/Courses/CS/Database-fall2018/flights.db دانلود کنید و آن را در همان پوشه‌ای که این Jupyter notebook هست قرار دهید.
  • سلول بالای این نوت‌بوک را اجرا کنید (با فشردن شیفت+اینتر) تا پایگاه داده‌ی flights.db بارگزاری شود.
  • شما می‌توانید سلول‌های جدیدی در این نوت‌بوک ایجاد کنید، مثلا برای تست، عیب‌یابی یا کاوش اطلاعات. در واقع توصیه‌ی ما این هست که حتما این کار را انجام دهید.
  • وقتی عبارت In [*]: را در سمت چپ سلولی که در حال اجرایش هستید، مشاهده می‌کنید، بدین معنیست که کد یا درخواست شما در حال اجراست.
    • اگر سلول هنگ کرد (یعنی برای مدت زمان زیادی اجرایش ادامه پیدا کرد) برای ریستارت کردن ارتباط SQL، باید کل کرنل پایتون را ریستارت کنید
    • برای ریستارت کردن کرنل پایتون میتوانید از منوی بالای صفحه استفاده کنید: "Kernel >> Restart & Clear Output" و سپس سلول بالای این صفحه را مجددا اجرا کنید تا اتصال به پایگاه داده مجددا انجام شود.
  • به خاطر داشته باشید:
    • %sql [SQL]
      برای کوئری‌های _تک خطی_ هست.
    • %%sql [SQL]
      برای کوئری‌های _چند خطی_ هست.
  • اجرای submit.py کوئری‌ها را اجرا خواهد کرد و نتایج آنها را پرینت می کند.
  • نتایج صحیح کوئری‌های در فایل correct_output.txt قرار دارد.
    • برای چک کردن درستی راه حلتان میتوانید یکی از دو دستور زیر را اجرا کنید
      • python sanity_check.py
      • python submit.py > my_output; diff my_output correct_output.txt
      • فایل submit.py که شامل راه حل‌های شماست باید کاملا با این خروجی مطابقت داشته باشد. به این معنی که:
        • نام ستون‌ها باید کاملا مطابق همان نام در فایل correct_output.txt باشند
        • ستون‌ها باید به همان ترتیب که در فایل correct_output.txt آمده‌است قرار بگیرند

توضیحات ارسال تمرین:

  • فایل iPython notebook مربوط به این تمرین را ارسال نکنید.
  • هر کدام از کوئری‌هایتان را به مکان مشخص شده برای همان کوئری درون اسکریپت submit.py کپی کنید.
    • دستورات %sql یا %%sql را کپی نکنید و فقط کوئری را کپی کنید.
    • ما کوئری‌های شما را روی یک پایگاه داده‌ی دیگر با همین شما ولی مقادیر متفاوتی اجرا کرده و بصورت اتوماتیک نمره‌دهی می‌کنیم. بنابراین، هیچ مقدار ثابتی که مختص مقادیر این پایگاه داده هست را درون کوئری‌هایتان قرار ندهید. همچنین، همه‌ی کوئری‌هایتان باید از جداول موجود در پایگاه داده استفاده کنند.
  • پس از قرار دادن جواب‌هایتان درون فایل submit.py، این فایل را در قسمت مربوط به همین تمرین در سامیاد آپلود کنید

خوش بگذره!