Linux за българи: Форуми

Програмиране => Конкурс bash-майсторът => Темата е започната от: VladSun в Sep 20, 2008, 16:28



Титла: Sql masters party
Публикувано от: VladSun в Sep 20, 2008, 16:28
Такааам :)

  Идеята в новата игра е да се напишат по възможно най-оптималния начин, за дадените таблици, SQL заявки, които да изпълняват условията на задачите.

  За решена се счита задача, за която сте написали такава заявка, която изпълнява следните условия:
- да е единична заявка!;
- няма грешки в SQL синтаксиса;
- връща точно толкова редове, колкото моята (експертна :p) заявка;
- връща стойности на колоните еднакви с тези генерирани от моята заявка и в същия ред;
- връща редовете в реда, в който ги връща моята заявка;
- може да съдържа повече колони от изискваните от задачата, но е задължително изискваните от задачата да са преди тях;

  След като изпълните заявка отговаряща на горните условия, ще засеча времето необходимо за изпълнение на вашата и моята заявка. При разлика над 5% се дава точка в резулатат "аз-ти". В същото време се дават съответните точки за нивото (може и да са отрицателни ;) ).
  Алгоритъмът за горните сметки не е много добър и се влияе от доста фактори, но ... това е, с което разполагам :)

  Искрено се надявам да има хора, които да ме победят убедително в тази игра - поне и аз да науча нещо. Не претендирам, че съм SQL бог, но каквото мога да направя - правя колкото мога :).

  Framework-a на играта е така направена, че изисква само редактор за SQL - с други думи, ако някой се сети за нови нива да праща на лично съобщение:
- описание на задачата;
- нужни таблици;
- SQL заявка за решението;

  Най-накрая и параметрите на играта:

- MySQL 5.0.51a;
- MyISAM таблици;
- индекси на всички полета, в които присъства "id" ;) ;
- където е необходимо има и сложни уникални индекси;
- достатъчно големи таблици - 50% с редове над 10'000;

И адреса:

http://212.117.50.108:80

Успех!

ПП: Никъде няма да видите DB резултат от вашите заявки. Няма смисъл да пускате заявки от сорта на:

Примерен код
select * from user;






Титла: Sql masters party
Публикувано от: karaman в Sep 20, 2008, 17:05
успех с партито  :angry:

някои от заявките могат да се напишат по няколко начина!


Титла: Sql masters party
Публикувано от: VladSun в Sep 20, 2008, 17:11
Да - за това гледам само резултата, а не заявката ;)
Моделът на "черната кутия".
Могат да се напишат по различни начини, но коя ще е най-бързата е въпросът :)


Титла: Sql masters party
Публикувано от: VladSun в Sep 20, 2008, 18:35
Успях да съчиня цели 8 нива :)
Предупреждавам, че сървера ще е offline всеки ден от около 00:00 часа до около 14:00 часа (т.е. времето ми за сън ;) )


Титла: Sql masters party
Публикувано от: VladSun в Sep 20, 2008, 20:04
Четете внимателно условието на задачите. Всяко неспазено изискване към резултата води до отчитането на заявката като грешна.
Спазвайте като реда на колоните, така и реда на сортиране на резултата.


Титла: Sql masters party
Публикувано от: VladSun в Sep 20, 2008, 20:56
И ... само напомням, че за да няма колизия между служебните думи на MySQL и имената на таблиците и колоните се използва ` символа. Т.е.:
Примерен код
select `select` from `where` where `where`.`order` = 'up';


Титла: Sql masters party
Публикувано от: plamen_f в Sep 21, 2008, 08:07
offtopic

Да не прозвучи като заяждане ама моля Ви използвайте думите правилно! Няма такова понятие като "най-оптимално". Смисъла а думата оптимално е точно най....


Титла: Sql masters party
Публикувано от: VladSun в Sep 21, 2008, 14:49
И да не прозвучи като заяждане, ама в тази тема само ще се заяждаме ли?
Да взема да сменя заглавието й тогава ...

Два отговора -  и двата не на място ...


Титла: Sql masters party
Публикувано от: VladSun в Sep 21, 2008, 16:03
Съжалявам, но почивните дни ще бъда извън линия ;)
Във вторник продължаваме.