نمایش نتایج 1 تا 10 از 10

نام تاپیک: دومین چالش SQL

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    Question دومین چالش SQL

    مقدمه
    این چالش بسیار ساده طراحی شده تا دوستان بیشتری قادر به حل آن باشند. چالش مرتبط به خلاصه کردن و کلاسه کردن داده هاست.
    فردی که مساله را با کوتاه ترین کد بطور کامل حل کند برنده اعلام خواهد شد.
    راه حل محدودیت خاصی ندارد. شما قادر هستید از هر دستوری (چه DML و چه DDL) برای گرفتن نتیجه استفاده کنید.
    مساله
    جدولی داریم که نتایج آزمون های دروس مختلف دانشجویان را نگهداری میکند. شماره دانشجو، شماره درس و نمره. یک دانشجو از یک درس بیش از یک نمره نمی تواند داشته باشد. نمرات بین 0 تا 20 هستند.
    کد زیر را برای ایجاد جدول همراه با سطرهای نمونه اجرا کنید:
      

    CREATE TABLE Results
    (std_nbr INTEGER NOT NULL, --Student No
    --REFERENCES Students(std_nbr)
    crs_nbr INTEGER NOT NULL,--Course No
    --REFERENCES Courses(crs_nbr)
    nbr REAL NOT NULL --Number of course
    CHECK (nbr BETWEEN 0 AND 20),
    PRIMARY KEY (std_nbr, crs_nbr));

    INSERT INTO Results(std_nbr, crs_nbr, nbr) VALUES
    (1, 01, 16.00),
    (1, 02, 16.50),
    (1, 05, 15.00),
    (1, 07, 17.00),
    (1, 10, 16.00),
    (1, 11, 19.75),

    (2, 03, 09.75),
    (2, 04, 07.25),
    (2, 05, 10.00),
    (2, 06, 14.25),
    (2, 07, 13.75),

    (3, 15, 20.00),
    (3, 16, 19.50),
    (3, 17, 19.50),
    (3, 18, 19.50),
    (3, 19, 17.75),
    (3, 25, 16.25);


    نتیجه ی مورد نظر به شکل زیر است، نتیجه ابتدا بر اساس ستون std_nbr بصورت صعودی و بعد توسط Class آن هم بصورت صعودی مرتب می شود:

    std_nbr     Class Cnt         Average
    ----------- ----- ----------- ----------------------
    1 A 2 18.375
    1 B 4 15.875
    2 B 1 14.25
    2 C 2 11.875
    2 D 2 8.5
    3 A 5 19.25
    3 B 1 16.25




    نمرات زیر 10 در کلاس D، نمرات بین 10 و زیر 14 در کلاس C، نمرات بین 14 و زیر 17 در کلاس B و نمرات برابر یا بزرگتر از 17 در کلاس A طبقه بندی می شوند.
    هدف دسته بندی کردن نمرات هر دانشجو و بدست آوردن تعداد نمره در هر کلاس همراه با میانگین نمرات است.
    هدف همانطور که قبلا اعلام شد بدست آوردن کوتاه ترین روش است.


    از راه حل های صحیح دوستان استقبال خواهد شد حتی اگر خیلی طولانی و ابتدایی باشد. یک هفته ی آینده راه حل خودم را همراه با راه حل برنده ارسال میکنم.
    کوتاه ترین راه حلی که من تاکنون بدست آوردن مجموعا 182 کاراکتر طول دارد.

    آخرین ویرایش به وسیله محمد سلیم آبادی : یک شنبه 25 اردیبهشت 1390 در 21:02 عصر
    وبلاگ من (Advanced SQL Querying)

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •