مقدمه
این چالش بسیار ساده طراحی شده تا دوستان بیشتری قادر به حل آن باشند. چالش مرتبط به خلاصه کردن و کلاسه کردن داده هاست.
فردی که مساله را با کوتاه ترین کد بطور کامل حل کند برنده اعلام خواهد شد.
راه حل محدودیت خاصی ندارد. شما قادر هستید از هر دستوری (چه 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 کاراکتر طول دارد.