Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

  • Location:
  • Music:

Две задачки

Вчера я был на собеседовании по поводу трудоустройства в одно широкоизвестное заведение. Про PHP вопрос был всего один, и я ответил совершенно верно, потому что он был простой. Потом начались вопросы, касающиеся SQL, и на них-то я и засыпался. Сейчас я, посидев дома в относительно спокойной обстановке и с мануалом под рукой, придумал на них ответы, один точно верный, и один через-жопу-кувырком.
Вашему внимаю представляю:

1) дана таблица tabl, в ней всего одно поле N целочисленного типа. В таблице лежат цифры:
1 2 3 4 6 7 10 11 12 13 20 21 22 23 30 ...
То есть числовая последовательность с "дырками", разбросанными бессистемно. Задание: извлечь одним запросом цифры, находящиеся слева от дырок (я их выделил жирным).

2) изобразить на языке SQL календарь на текущий месяц.

Ответы:


1)
select N as i from tabl where if((select N from tabl where N = i + 1),null, N);

2)
select @offset := date_format(curdate(), '%e') mod 7;
select @m := date_format(curdate(), '%c');
select @yv := date_format(curdate(), '%y') mod 4;

select if(0 - @offset <= 0, ' ',0 - @offset) as MN,
if(1 - @offset <= 0, ' ', 1 - @offset) as TU,
if(2 - @offset <= 0, ' ', 2 - @offset) as WD,
if(3 - @offset <= 0, ' ', 3 - @offset) as TH,
if(4 - @offset <= 0, ' ', 4 - @offset) as FR,
if(5 - @offset <= 0, ' ', 5 - @offset) as SA,
if(6 - @offset <= 0, ' ', 6 - @offset) as SU

union

select 7 - @offset,
8 - @offset,
9 - @offset,
10 - @offset,
11 - @offset,
12 - @offset,
13 - @offset

union ...
дальше я писать не стал, и всякие длинные несложные проверки в конце тоже придумывать не захотел. Мне кажется, эта запись чересчур громоздка, и должен существовать более компактный вариант.

И в качестве бонуса: написать регулярное выражение для определения баланса скобочек в строке. Ну, скажем, дана строка типа
((()))()(())))()(()()()))(()()
И одной сверкой с регулярным выражением надло определить, всем ли закрывающимся скобкам соответствуют открывающиеся, и нет ли лишних.
Если мне кто-нибудь объяснит, почему `\((|(?R))\)` не работает, я буду очень благодарен.
Tags: web, работа
Subscribe

  • Матрёшка

    Летом я утопил свой большой чёрный фотоаппарат. Горевал-горевал, и купил новый. А утопленник просох как следует и ожил. Я знаю про возможность…

  • Телефон моей жены нас, кажется, подслушивает

    Ещё несколько лет назад мой тогдашний коллега по работе Петр жаловался на то, что его телефон его подслушивает. Стоит только в разговоре что-нибудь…

  • 12 июля

    Отпуск кончился, завтра на работу. Ещё, оказывается, сегодня день фотографа, по крайней мере, в России. Это как-то связано с некой святой…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments